P1108 低价购买 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
坑点有亿点多。
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define N 5005
int n, a[N], f[N], t[N], maxx = 1, sum;
signed main()
{
scanf("%d", &n);
for(int i = 1; i <= n; i++)
{
scanf("%d", &a[i]);
f[i] = 1;
}
for(int i = 1; i <= n; i++)
{
for(int j = 1; j < i; j++)
{
if(a[j] > a[i])
{
f[i] = max(f[i], f[j] + 1);
}
}
maxx = max(maxx, f[i]);
for(int j = 1; j < i; j++)
{
if(f[i] == f[j] && a[i] == a[j])
{
t[j] = 0;
}
else if(f[i] == f[j] + 1 && a[j] > a[i])
{
t[i] += t[j];
}
}
if(!t[i])
{
t[i] = 1;
}
}
for(int i = 1; i <= n; i++)
{
if(f[i] == maxx)
{
sum += t[i];
}
}
printf("%d %d", maxx, sum);
return 0;
}