讨论 / 贪心也AC
Z236541 2010-10-24 05:06:00
点我顶贴 收藏 删除
const

maxn=300001;

type

ree=record

data:longint;

att:array[1..1000] of longint;

end;

var

i,j,n,l,ans:longint;

f:array[1..1000] of ree;

aa,bb:array[1..1000] of longint;

procedure find(a:boolean);

var

i,j,max,tt:longint;

begin

for i:=2 to n do

for j:=1 to i-1 do

if (aa[i]<>maxn)and(aa[j]<>maxn)then

if (aa[j]>=aa[i])and(f[j].data+1>f[i].data) then

begin

f[i].data:=f[j].data+1;

f[i].att:=f[j].att;

f[i].att[f[i].data]:=i;

end;

max:=0;

for i:=1 to n do

if f[i].data>max then

begin

tt:=i;

max:=f[i].data;

end;

if a then write(f[tt].data,' ');

for j:=1 to f[tt].data do

aa[f[tt].att[j]]:=maxn;

end;

function sui:boolean;

var

i:longint;

begin

sui:=true;

for i:=1 to n do

if aa[i]<>maxn then

begin

sui:=false;

exit;

end;

end;

begin

read(n);

for i:=1 to n do

begin

read(aa[i]);

f[i].att[1]:=i;

f[i].data:=1;

end;

find(true);

ans:=1;

while not(sui) do

begin

bb:=aa;

j:=0;

for i:=1 to n do

if bb[i]<>maxn then

begin

inc(j);

aa[j]:=bb[i];

end;

n:=j;

for i:=1 to n do

begin

f[i].data:=1;

f[i].att[1]:=i;

end;

find(false);

inc(ans);

end;

writeln(ans);

end.

查看更多回复
提交回复