大致思路是统计左边小的,右边大的。
#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;
}