Pagini recente » Cod sursa (job #596941) | Cod sursa (job #955032) | Cod sursa (job #1728502) | Cod sursa (job #854887) | Cod sursa (job #144481)
Cod sursa(job #144481)
var arb,v,rez:array[1..40000] of longint;
n,i,j,t,poz,log:longint;
procedure build(nod:longint;l,r:longint);
var m:longint;
begin
if (l=r) then
begin
arb[nod]:=1;
exit;
end;
m:=(l+r) div 2;
build(nod*2,l,m);
build(nod*2+1,m+1,r);
arb[nod]:=arb[2*nod]+arb[2*nod+1];
end;
procedure compute(nod,x:longint;var poz:longint);
var m:longint;
begin
if (arb[nod]=1)and(nod>log) then
begin
poz:=nod-log;
arb[nod]:=0;
exit;
end;
if x<=arb[2*nod] then
compute(2*nod,x,poz)
else
compute(2*nod+1,x-arb[2*nod],poz);
dec(arb[nod]);
end;
begin
assign(input,'schi.in');reset(input);
assign(output,'schi.out');rewrite(output);
readln(n);
for i:=1 to n do
read(v[i]);
log:=1;
while log*2<n do
log:=log*2;
log:=log*2-1;
build(1,1,n);
for i:=n downto 1 do
begin
t:=v[i];
poz:=0;
compute(1,t,poz);
rez[poz]:=i;
end;
for i:=1 to n do
writeln(rez[i]);
close(input);close(output);
end.