求助55分
查看原帖
求助55分
191819
__shadow__楼主2021/10/11 18:33
#include<bits/stdc++.h>
using namespace std;
const int N = 5000 + 5;
int f1[N], f2[N];
int n, a[N], ans, s;
int main()
{
	scanf ("%d", &n);
	for (int i = 1;i <= n; i++)
		scanf ("%d", a + i);
	for (int i = 1;i <= n; i++)
	{
		f1[i] = 1;
		for (int j = 1;j < i; j++)
			if (a[j] > a[i])
				if (f1[j] >= f1[i])
					f1[i] = f1[j] + 1;
	}
	for (int i = 1;i <= n; i++)
	{
		if (f1[i] == 1)
		{
			f2[i] = 1;
			continue;
		}
		for (int j = 1;j < i; j++)
			if (a[i] == a[j] && f1[i] == f1[j])
				f1[i] = -1;
			else if (f1[j] == f1[i] - 1 && a[j] > a[i])
				f2[i] += f2[j];
	}
	for (int i = 1;i <= n; i++)
		if (ans < f1[i])
		{
			ans = f1[i];
			s = f2[i];
		}
		else if (ans == f1[i])
			s += f2[i];
	printf ("%d %d\n", ans, s);
	return 0;
}
2021/10/11 18:33
加载中...