class Solution {
public:
int countSubarrays(vector<int>& nums, int k) {
int id=-1;
map<int,int>mp;
for(int i=0;i<nums.size();i++)
{
if(nums[i]==k)
{
id=i;
break;
}
}
if(id==-1) return 0;
int x1=0;
int x0=0;
mp[0]=1;
//mp[x]表示大于k的数减去小于k的数的值
for(int i=id-1;i>=0;i--)
{
if(nums[i]>k) x1++;
x0=id-i-x1;
mp[x1-x0]++;
}
x1=0;
x0=0;
int res=0;
for(int i=id;i<nums.size();i++)
{
if(nums[i]>k)x1++;
x0=i-id-x1;
res+=mp[x0-x1]+mp[x0-x1+1];
}
return res;
}
};