Pagini recente » Cod sursa (job #2505985) | Cod sursa (job #3263191) | Cod sursa (job #804710) | Cod sursa (job #1212652) | Cod sursa (job #144514)
Cod sursa(job #144514)
var arb,v,rez,p:array[0..62768] of integer;
n,i,j,t,poz:longint;
procedure build(nod:integer;l,r:integer);
var m:longint;
begin
if (l=r) then
begin
arb[nod]:=1;
p[nod]:=l;
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(p[nod]<>0) then
begin
poz:=p[nod];
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]);
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.