#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <map>
using namespace std;
map<int,int> mp;
int n,b,a[100005],q,suml,sumr;
long long ans;
int main(){
scanf("%d%d",&n,&b);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
if(a[i]==b) q=i;
}
for(int j=q;j<=n;j++){
if(a[j]>b) sumr++;
if(a[j]<b) sumr--;
mp[sumr]++;
}
for(int i=q;i>=1;i--){
if(a[i]>b) suml++;
if(a[i]<b) suml--;
ans+=mp[0-suml];
}
printf("%lld",ans);
}
这种map映射的操作如何求出正确值的, 具体原理是怎样的, 手模样例也还是不太明白,有dalao能给本蒟蒻讲一下ma