Pagini recente » Cod sursa (job #2746125) | Cod sursa (job #2723952) | Cod sursa (job #2325782) | Cod sursa (job #2926938) | Cod sursa (job #69090)
Cod sursa(job #69090)
Program Stramosi; uses timp;
const cin : array[0..8] of longint=(1,5,25,125,625,3125,15625,78125,390625);
var m,n : longint;
S : array[0..250000,0..7] of longint;
log5 : array[1..250000] of integer;
Intrare,Iesire : text; t1 : real;
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 CalcLog5;
var i : longint;
p : integer;
begin
p:=0;
while cin[p+1]-1<=n do
begin
for i:=cin[p] to cin[p+1]-1 do log5[i]:=p;
p:=p+1;
end;
for i:=cin[p] to n do log5[i]:=p;
end;
procedure Calcule;
var i,j,ip : longint;
begin
CalcLog5;
for i:=0 to 7 do S[0,i]:=0;
for i:=1 to log5[n] do
begin
ip:=i-1;
for j:=1 to n do S[j,i]:=S[S[S[S[S[j,ip],ip],ip],ip],ip];
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:=log5[P];
Q:=S[Q,lg];
P:=P-cin[lg];
end;
writeln(Iesire,Q);
end;
close(Intrare);
close(Iesire);
end;
begin t1:=timpulcurent;
Citeste;
Calcule;
Procesare; writeln(timpulcurent-t1:0:3); readln;
end.