Pagini recente » Cod sursa (job #1354269) | Cod sursa (job #35679) | Cod sursa (job #795781) | Istoria paginii schimbare-borland/argumentatie | Cod sursa (job #844507)
Cod sursa(job #844507)
{problema schi de pe infoarena}
var a2:array[1..65535]of word; b,c:array[1..30000]of word; n,s,i:word;
procedure interogare(nod,st,dr,a:word);
var mij:word;
begin
mij:=(st+dr) div 2;
if st<dr then begin if a2[nod*2]>=a then interogare(2*nod,st,mij,a) else interogare(2*nod+1,mij+1,dr,a-a2[nod*2]) end else s:=st;
end;
procedure sterge(nod,st,dr,a:word);
var mij:word;
begin
mij:=(st+dr) div 2;
a2[nod]:=a2[nod]-1;
if st<>dr then begin if a<=mij then sterge(2*nod,st,mij,a) else sterge(2*nod+1,mij+1,dr,a); end;
end;
procedure actualizare(nod,st,dr:word);
var mij:word;
begin
a2[nod]:=dr-st+1;
mij:=(st+dr) div 2;
if (dr-st)>0 then begin actualizare(2*nod,st,mij); actualizare(2*nod+1,mij+1,dr) end;
end;
begin
assign(input,'schi.in'); reset(input);
readln(n);
actualizare(1,1,n);
for i:=1 to n do readln(b[i]);
for i:=n downto 1 do
begin
s:=0;
interogare(1,1,n,b[i]);
c[s]:=i;
sterge(1,1,n,s);
end;
assign(output,'schi.out'); rewrite(output);
for i:=1 to n do writeln(c[i]);
close(output);
end.