Pagini recente » Cod sursa (job #2677455) | Cod sursa (job #1745509) | Cod sursa (job #972192) | Cod sursa (job #524199) | Cod sursa (job #43952)
Cod sursa(job #43952)
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.