奇怪的一题…需要多想想…
#include <cstdio>
const int N=400010;
const int ZERO=200010;
int n,b,pb,ans;
int a[N];
int l[2][N],r[2][N];
int main(){
scanf("%d%d",&n,&b);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
for(int i=1;i<=n;i++){
if(a[i]==b){
pb=i;
break;
}
}
l[0][ZERO]=r[0][ZERO]=1;
for(int i=pb-1,cnt=0;i>=1;i--){
if(a[i]<b) cnt--;
else cnt++;
l[(pb-i)&1][cnt+ZERO]++;
}
for(int i=pb+1,cnt=0;i<=n;i++){
if(a[i]<b) cnt--;
else cnt++;
r[(i-pb)&1][cnt+ZERO]++;
}
for(int i=-n;i<=n;i++) ans+=l[0][i+ZERO]*r[0][-i+ZERO]+l[1][i+ZERO]*r[1][-i+ZERO];
printf("%d",ans);
return 0;
}