program NDK1330;
const
maxn=4000;
var
n,max:longint;
a,f:array [0..maxn] of longint;
procedure bbaa(x:longint);
var
i,j,k:longint;
begin
for i:=x-1 downto max+2 do
begin
if a[i]=a[x] then
begin
for j:=i-1 downto max+1 do
begin
for k:=j-1 downto max do
begin
if a[k]=a[j] then
begin
f[x]:=f[max]+1;
max:=x+1;
exit;
end;
end;
end;
end;
end;
end;
procedure baba(x:longint);
var
i,j,k:longint;
begin
for i:=x-1 downto max+2 do
begin
for j:=i-1 downto max+1 do
begin
if a[j]=a[x] then
begin
for k:=j-1 downto max do
begin
if a[k]=a[i] then
begin
f[x]:=f[max]+1;
max:=x+1;
exit;
end;
end;
end;
end;
end;
end;
procedure abba(x:longint);
var
i,j,k:longint;
begin
for i:=x-1 downto max+2 do
begin
for j:=i-1 downto max+1 do
begin
if a[j]=a[i] then
begin
for k:=j-1 downto max do
begin
if a[k]=a[x] then
begin
f[x]:=f[max]+1;
max:=x+1;
exit;
end;
end;
end;
end;
end;
end;
procedure init;
var
i:longint;
begin
readln(n);
for i:=1 to n do read(a[i]);
max:=1;
fillchar(f,sizeof(f),0);
for i:=4 to n do
begin
bbaa(i);
if f[i]>0 then continue;
baba(i);
if f[i]>0 then continue;
abba(i);
if f[i]>0 then continue;
f[i]:=f[i-1];
end;
end;
begin
assign(input,'NDK1330.in'); reset(input);
assign(output,'NDK1330.out'); rewrite(output);
init;
writeln(f[n]);
close(input); close(output);
end.考验(NDK1330)
最新推荐文章于 2021-05-27 09:15:31 发布
3183

被折叠的 条评论
为什么被折叠?



