样例没过求调
查看原帖
样例没过求调
541254
BugGod楼主2023/10/27 22:11

大致思路是统计左边小的,右边大的。

#include<bits/stdc++.h>
using namespace std;
#define int long long
map<int,int>m;
int n,b,a[100010],id,l,r,ans;
signed main()
{
    cin>>n>>b;
    for(int i=1;i<=n;i++)cin>>a[i];
    for(int i=1;i<=n;i++)if(a[i]==b)id=i;
    for(int i=id+1;i<=n;i++)
    {
        if(a[i]>b)r++;
        else r--;
        m[r]++;
    }
    for(int i=id-1;i>=1;i--)
    {
        if(a[i]<b)l++;
        else l--;
        ans+=m[l];
    }
    cout<<ans;
	return 0;
}
2023/10/27 22:11
加载中...