Pagini recente » Cod sursa (job #848653) | Cod sursa (job #138913) | Cod sursa (job #1147576) | Cod sursa (job #2403635) | Cod sursa (job #844475)
Cod sursa(job #844475)
{problema schi de pe infoarena}
var a2:array[1..60000]of integer; b,c:array[1..30000]of integer; n,s:integer; 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.