Pagini recente » Cod sursa (job #3177880) | Cod sursa (job #233266) | Cod sursa (job #2641548) | Cod sursa (job #2472339) | Cod sursa (job #69136)
Cod sursa(job #69136)
Program Stramosi;
const cub : array[0..11] of longint=(1,3,9,27,81,243,729,2187,6561,19683,
59049,177147);
var m,n : longint;
S : array[0..250000,0..11] of longint;
log3 : array[1..250000] of integer;
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;
procedure CalcLog3;
var i : longint;
begin
for i:=1 to n do log3[i]:=trunc(ln(i)/ln(3));
end;
procedure Calcule;
var i,j,ip : longint;
begin
CalcLog3;
for i:=0 to 11 do S[0,i]:=0;
for i:=1 to log3[n] do
for j:=1 to n do S[j,i]:=S[S[S[j,i-1],i-1],i-1];
end;
procedure Procesare;
var i,Q,P : longint;
begin
assign(Iesire,'stramosi.out');
rewrite(Iesire);
for i:=1 to m do
begin
readln(Intrare,Q,P);
while P>0 do
begin
Q:=S[Q,log3[P]];
P:=P-cub[log3[P]];
end;
writeln(Iesire,Q);
end;
close(Intrare);
close(Iesire);
end;
begin
Citeste;
Calcule;
Procesare;
end.