Pagini recente » Cod sursa (job #487242) | Cod sursa (job #2127363) | Cod sursa (job #1625516) | Cod sursa (job #629610) | Cod sursa (job #36815)
Cod sursa(job #36815)
type rec=record
nr,ses:longint;
end;
type rec2=record
long:longint;
pas:array[0..250000] of longint;
end;
var a,c:array[0..250000] of longint;
b:array[0..250000] of rec;
e:array[1..250000] of integer;
d:array[1..1000] of rec2;
p,j,m,n,q,k,i,num,st,lo:longint;
f,g:text;
ok:boolean;
begin
assign(f,'stramosi.in');
assign(g,'stramosi.out');
reset(f);
rewrite(g);
read(f,n,m);
for i:=1 to n do
read(f,a[i]);
for i:=1 to m do begin
read(f,q,p);
j:=0;
ok:=true;
while (j<p) and ok do begin
inc(j);
q:=a[q];
if b[q].ses<>i then begin
b[q].nr:=j;
b[q].ses:=i;
c[j]:=q;
if e[q]<>0 then begin
st:=b[q].nr;
lo:=d[e[q]].long;
ok:=false;
end;
end
else begin
ok:=false;
inc(num);
e[q]:=num;
d[e[q]].long:=j-b[q].nr;
st:=b[q].nr;
lo:=d[e[q]].long;
for k:=1 to lo do
d[e[q]].pas[i]:=c[st+i-1];
end;
end;
if j<>p then
q:=d[e[q]].pas[(p-st) mod lo];
writeln(g,q)
end;
close(f);
close(g);
end.