Pagini recente » Profil nicnic28 | Monitorul de evaluare | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #201315)
Cod sursa(job #201315)
var v,a,b,p,q,c,d,e,r,s,u:array[-1..300100]of longint;
n,i,j,k,m:longint;
f:text;
procedure caut(x,o:longint);
var y:longint;
begin
for y:=c[x-1]+1 to c[x] do
if(d[y]>o)then r[e[y]]:=0
else r[e[y]]:=s[o-d[y]];
s[o]:=x;
for y:=a[x-1]+1 to a[x] do
caut(b[y],o+1);
end;
begin
assign(f,'stramosi.in');
reset(f);
readln(f,n,m);
for i:=1 to n do
begin
read(f,v[i]);
a[v[i]]:=a[v[i]]+1;
end;
for i:=0 to n do
a[i]:=a[i]+a[i-1];
u:=a;
for i:=n downto 0 do
a[i]:=a[i-1]+1;
for i:=1 to n do
begin
b[a[v[i]]]:=i;
a[v[i]]:=a[v[i]]+1;
end;
for i:=1 to m do
begin
read(f,p[i],q[i]);
c[p[i]]:=c[p[i]]+1;
end;
close(f);
for i:=0 to n do
c[i]:=c[i]+c[i-1];
for i:=n downto 0 do
c[i]:=c[i-1]+1;
for i:=1 to m do
begin
d[c[p[i]]]:=q[i];
e[c[p[i]]]:=i;
c[p[i]]:=c[p[i]]+1;
end;
for i:=0 to n do
begin
a[i]:=a[i]-1;
c[i]:=c[i]-1;
end;
caut(0,1);
assign(f,'stramosi.out');
rewrite(f);
for i:=1 to m do
writeln(f,r[i]);
close(f);
end.