计算最长不降子序列的个数
var i,j,n,ans,max:longint;
a,f,t:array[1..1000]of longint;
begin
readln(n);
for i:=1 to n do
readln(a[i]);
t[1]:=1;
f[1]:=1;
for i:=2 to n do
begin
for j:=i-1 downto 1 do
begin
if (a[j]<a[i]) and (f[i]<f[j]) then
f[i]:=f[j]+1;
end;
if f[i]>max then
max:=f[i];
for j:=i-1 downto 1 do
if f[j]=f[i]-1 then
t[i]:=t[i]+t[j];
end;
for i:=1 to n do
if f[i]=max then
ans:=ans+t[i];
writeln(ans);
end.
var i,j,n,ans,max:longint;
a,f,t:array[1..1000]of longint;
begin
readln(n);
for i:=1 to n do
readln(a[i]);
t[1]:=1;
f[1]:=1;
for i:=2 to n do
begin
for j:=i-1 downto 1 do
begin
if (a[j]<a[i]) and (f[i]<f[j]) then
f[i]:=f[j]+1;
end;
if f[i]>max then
max:=f[i];
for j:=i-1 downto 1 do
if f[j]=f[i]-1 then
t[i]:=t[i]+t[j];
end;
for i:=1 to n do
if f[i]=max then
ans:=ans+t[i];
writeln(ans);
end.