Pagini recente » Cod sursa (job #1297793) | Cod sursa (job #1253478) | Cod sursa (job #2428968) | Cod sursa (job #1755760) | Cod sursa (job #253232)
Cod sursa(job #253232)
const nmax=120000;
var f,g:text;
v,a:array[1..(nmax div 4)]of longint;
af:array[1..nmax] of longint;
mij,i,j,n:longint;
{}
procedure actualizare(st,dr:longint);
begin
if dr>0 then
begin
af[st]:=dr;
if dr>1 then begin
actualizare(2*st,(dr shr 1)+dr mod 2);
actualizare(2*st+1,(dr shr 1));
end;
end;
end;
{}
procedure caut(nod,k,st,dr:longint);
begin
if st=dr then
a[st]:=i
else
begin
mij:=st+(dr-st+1)shr 1+(dr-st+1)mod 2-1;
if af[2*nod]>=k then caut(2*nod,k,st,mij)
else caut(2*nod+1,k-af[2*nod],mij+1,dr);
end;
af[nod]:=af[nod]-1;
end;
{}
begin
assign(f,'schi.in');
reset(f);
readln(f,n);
for i:=1 to n do
readln(f,v[i]);
actualizare(1,n);
for i:=n downto 1 do
caut(1,v[i],1,n);
assign(g,'schi.out');
rewrite(g);
for i:=1 to n do
writeln(g,a[i]);
close(g);
end.