算法:模拟
分析:用f[i,1]表示第i号位置上长度为1的总数,同理f[i,2]表示第i号位置上长度为2的总数……
那么通过前面的枚举,f[i,k]=f[i,k]+f[j,k-1]{a[j]>a[i]}。
分析:用f[i,1]表示第i号位置上长度为1的总数,同理f[i,2]表示第i号位置上长度为2的总数……
那么通过前面的枚举,f[i,k]=f[i,k]+f[j,k-1]{a[j]>a[i]}。
最后把长度是三的统计一遍即可。
program ddfy;
const
maxn=20000;
var
a:array [0..maxn] of longint;
f:array [0..maxn,1..3] of longint;
n,i,j,k,ans:longint;
procedure init;
var
i:longint;
begin
ans:=0;
readln(n);
for i:=1 to n do
begin
read(a[i]);
f[i,1]:=1;
end;
end;
procedure main;
var
i,j,k:longint;
begin
for i:=2 to 3 do
begin
for j:=2 to n do
begin
for k:=1 to j-1 do if a[k]>a[j] then inc(f[j,i],f[k,i-1]);
end;
end;
for i:=1 to n do inc(ans,f[i,3]);
end;
begin
assign(input,'ddfy.in'); reset(input);
assign(output,'ddfy.out'); rewrite(output);
init;
main;
writeln(ans);
close(input); close(output);
end.