对于中位数的题,可以思考把大于它的数标记为1,小于的数标记为-1,等于的标记为0
#include <bits/stdc++.h>
using namespace std;
int arr[100050];
int pl[100050];
int pr[100050];
int main(void)
{
int n,f,pos;
scanf("%d%d",&n,&f);
for (int i=1;i<=n;i++)
{
scanf("%d",&arr[i]);
if (arr[i]<f) arr[i]=-1;
else if (arr[i]>f) arr[i]=1;
else if (arr[i]==f) arr[i]=0,pos=i;
}
int k1=0,k2=0;
for (int i=pos-1;i>=1;i--)
{
++k1;
pl[k1]=pl[k1-1]+arr[i];
}
for (int i=pos+1;i<=n;i++)
{
++k2;
pr[k2]=pr[k2-1]+arr[i];
}
//printf("%d %d\n",k1,k2);
int ans=0;
for (int i=0;i<=k1;i++)
{
for (int j=0;j<=k2;j++)
{
if (pl[i]==-pr[j]) ans++;
}
//printf("%d\n",ans);
}
printf("%d\n",ans);
}