Cod sursa(job #201315)

Utilizator GavrilaVladGavrila Vlad GavrilaVlad Data 30 iulie 2008 15:33:03
Problema Stramosi Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.12 kb
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.