Cod sursa(job #43952)

Utilizator andradaqAndrada Georgescu andradaq Data 30 martie 2007 18:31:17
Problema Schi Scor 70
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.87 kb
var free{,x,y}:array[1..60000] of integer;
    v,el:array[1..30000] of integer;
    f:text;
    k,n,i,ok:integer;

procedure constr(i,n{,xx,yy}:integer);
begin
if n>0 then
 begin
 free[i]:=n;
{ x[i]:=xx;
 y[i]:=yy;}
 if n>1 then
  begin
 constr(2*i,n div 2+n mod 2{,xx,xx+n div 2+n mod 2-1});
 constr(2*i+1,n div 2{,xx+n div 2+ n mod 2,yy});
 end;
 end;
end;

procedure cauta(i,n,x,y:integer);
var mij:integer;
begin
if x=y then el[x]:=k
 else
 begin
 mij:=x+(y-x+1)div 2+ (y-x+1) mod 2-1;
  if free[2*i]>=n then cauta(2*i,n,x,mij)
  else cauta(2*i+1,n-free[2*i],mij+1,y);
 end;
dec(free[i]);
end;


begin
assign(f,'schi.in'); reset(f);
readln(f,n);
for i:=1 to n do readln(f,v[i]);
close(f);
constr(1,n);
for k:=n downto 1 do
 begin
 cauta(1,v[k],1,n);
 end;
assign(f,'schi.out'); rewrite(f);
for i:=1 to n do
 writeln(f,el[i]);
close(f);
end.