#include<iostream>
using namespace std;

int main(){
    int n,b,b1,s1[100010]={0},s3[200010]={0},sumy=0;
    
    cin >> n >> b;
    for(int i = 0,s;i<n;i++){
        scanf("%d",&s);/*段错误:忘打‘&’*/
        if(s > b){
            s1[i] = 1;
        }else if(s < b){
            s1[i] = -1;
        }else{
            s1[i] = 0;
            b1 = i;
        }
    }
    
    for(int i=b1,sum=0;i>=0;i--){    //左侧,不同的和存在不同的下标(因为有负数,所以下标统一加100000),右侧检索相反数个数会更快
        sum+=s1[i];/*段错误:忘令sum=0*/
        s3[sum+100000]++;
        if(sum==0)sumy++;  /*只有左半侧区间和只有b一个数都算 ! ! !*/
    }
    for(int i = b1+1,sum=0;i<n;i++){   //右侧
        sum+=s1[i];
        sumy+=s3[-sum+100000];/*段错误:忘加100000*/
    }
    
    cout << sumy;
    
    return 0;
}
编写注意点:
1,段错误可能由各种错误引起,如忘加"&",要仔细检查