该怎么优化啊。。。QWQ
#include <bits/stdc++.h>
using namespace std;
int a[100005];
int dp1[100005];
int dp2[100005];
int main()
{
int n = 0;
while (scanf("%d", &a[++ n]) != EOF) dp2[n] = dp1[n] = 1;
dp1[1] = 1, dp2[1] = 1;
int ans1 = 0, ans2 = 0;
for (int i = 1; i < n; i++)
{
for (int j = 1; j < i; j++)
{
if (a[j] >= a[i])
{
dp1[i] = max(dp1[i], dp1[j] + 1);
ans1 = max(dp1[i], ans1);
}
if (a[j] < a[i])
{
dp2[i] = max(dp2[i], dp2[j] + 1);
ans2 = max(dp2[i], ans2);
}
}
}
printf ("%d\n%d", ans1, ans2);
return 0;
}