Pagini recente » Cod sursa (job #1462430) | Cod sursa (job #1215359) | Cod sursa (job #134155) | Cod sursa (job #2130546) | Cod sursa (job #69062)
Cod sursa(job #69062)
Program Stramosi;
const patr : array[0..17] of longint=(1,2,4,8,16,32,64,128,256,512,1024,
2048,4096,8192,16384,32768,65536,131072);
var m,n : longint;
S : array[0..250000,0..17] of longint;
Intrare,Iesire : text;
procedure Citeste;
var i : longint;
begin
assign(Intrare,'stramosi.in');
reset(Intrare);
readln(Intrare,n,m);
for i:=1 to n do read(Intrare,S[i,0]);
end;
function log2(a : longint) : integer;
begin
log2:=trunc(ln(a)/ln(2));
end;
procedure Calcule;
var i,j : longint;
begin
for i:=0 to 17 do S[0,i]:=0;
for i:=1 to log2(n) do
begin
for j:=1 to n do S[j,i]:=S[S[j,i-1],i-1];
end;
end;
procedure Procesare;
var i,Q,P : longint;
lg : integer;
begin
assign(Iesire,'stramosi.out');
rewrite(Iesire);
for i:=1 to m do
begin
readln(Intrare,Q,P);
while (P>0) and (Q>0) do
begin
lg:=log2(P);
Q:=S[Q,lg];
P:=P-patr[lg];
end;
writeln(Iesire,Q);
end;
close(Intrare);
close(Iesire);
end;
begin
Citeste;
Calcule;
Procesare;
end.