Pagini recente » Cod sursa (job #3141031) | Cod sursa (job #3128404) | Cod sursa (job #1958479) | Cod sursa (job #738884) | Cod sursa (job #21802)
Cod sursa(job #21802)
program p1;
type tip=0..250001;
arr=array[0..17,0..250001] of tip;
var mat:^arr;
n,m,i,j,p,q,x,y:0..350001;
f,g:text;
begin
assign(f,'stramosi.in');
reset(f);
assign(g,'stramosi.out');
rewrite(g);
read(f,n,m);
for i:=1 to n do
read(f,mat^[1,i]);
for i:=1 to n do
begin
j:=1;
p:=0;
repeat
j:=j+1;
x:=mat^[j-1,i];
if x=0 then p:=1
else
begin
q:=mat^[j-1,x];
if q=0 then p:=1
else mat^[j,i]:=q;
end;
until p=1;
mat^[0,i]:=1 shl (j-2);
end;
for y:=1 to m do
begin
readln(f,q,p);
if mat^[0,q]=0 then q:=0
else
begin
j:=1;
i:=1;
if (i and p)=i then
if mat^[0,q]<i then q:=0
else q:=mat^[j,q];
repeat
i:=i+i;
j:=j+1;
if (i and p)=i then
if mat^[0,q]<i then q:=0
else q:=mat^[j,q];
until (i>=p)or(q=0);
end;
writeln(g,q);
end;
close(f);
close(g);
end.