Cod sursa(job #253231)

Utilizator valytgjiu91stancu vlad valytgjiu91 Data 5 februarie 2009 16:21:28
Problema Schi Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.9 kb
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.