var
f,a:array[0..100000] of longint;
n,i,k,p,ans,j:longint;
begin
readln(n);
for i:=1 to n do read(a[i]);readln;
readln(k);
for i:=1 to n do{记录有多少比K小的}
if a[i]<k then f[i]:=f[i-1]+1
else begin
f[i]:=f[i-1];
if a[i]=k then p:=i;{K的位置}
end;
for i:=1 to p do{枚举(1,P)与(P,n)的组合}
begin
j:=p; if (j-i) mod 2<>0 then inc(j);{保证(i~j)为奇数}
repeat
if f[j]-f[i-1]>(j-i)div 2 then j:=2*(f[j]-f[i-1])+i{p~n间最小的可能解(貌似错了,改成inc(j)有几组数据能对,又有几组会错)}
else if f[j]-f[i-1]<(j-i)div 2 then j:=2*(j-i-f[j]+f[i])+i{p~n间最小的可能解(貌似错了,改成inc(j)有几组数据能对,又有几组会错)}
else begin inc(ans);inc(j);end;{f[j]-f[i-1]=(j-i)div 2比K大的和比K小的相等,得解}
if (j-i)mod 2<>0 then inc(j);{保证(i~j)为奇数}
until j>n;
end;
writeln(ans);
end.
希望有大牛能找出错误来,做了N久,无语了~~
总算是过了....
program RQEX_500;
var
f,a:array[0..100000] of longint;
n,i,k,p,ans,j:longint;
begin
readln(n);
for i:=1 to n do read(a[i]);readln;
readln(k);
for i:=1 to n do
if a[i]<k then f[i]:=f[i-1]+1
else begin
f[i]:=f[i-1];
if a[i]=k then p:=i;
end;
for i:=1 to p do
begin
j:=p; if (j-i) mod 2<>0 then inc(j);
repeat
if f[j]-f[i-1]=(j-i)div 2 then inc(ans)
else begin
j:=abs(j-i-2*(f[j]-f[i-1]))+j-2;
if (j-i)mod 2<>0 then inc(j);
end;
j:=j+2;
until j>n;
end;
writeln(ans);
end.