思路:
#include <cstdio>
#include <map>
using namespace std;
const int N = 1e5+10;
map<int,int> mp;
int a[N];
int main(){
int n,b,pos;scanf("%d%d",&n,&b);
for(int i = 1;i <= n;i++){
scanf("%d",a+i);
if(a[i] == b) pos = i;
}
int tmp = 0;
for(int i = pos;i <= n;i++){
if(a[i] > b) tmp++;
if(a[i] < b) tmp--;
mp[tmp]++;
}
tmp = 0;
int ans = 0;
for(int i = pos;i >= 1;i--){
if(a[i] > b) tmp++;
if(a[i] < b) tmp--;
ans += mp[0-tmp];
}
printf("%d\n",ans);
return 0;
}
京公网安备 11010502036488号