正在做导弹拦截这道题,然而TLE了 T_T 下面是代码,各位大佬帮帮忙吧
#include <bits/stdc++.h>
using namespace std;
int main() {
int n = 0;
int a[100000 + 10];
while (~scanf("%d", &a[++n]));
n--;
int dp[200000 + 10] = { 0 }, dp2[200000 + 10] = { 0 };
int ans = 0, ans2 = 0;
for (int i = 1; i <= n; i++) {
dp[i] = 1;
dp2[i] = 1;
for (int j = 1; j < i; j++) {
if (!(a[j] < a[i])) {
dp[i] = max(dp[i], dp[j] + 1);
}
if (a[j] < a[i]) {
dp2[i] = max(dp2[i], dp2[j] + 1);
}
}
ans = max(ans, dp[i]);
ans2 = max(ans2, dp2[i]);
}
printf("%d\n%d\n", ans, ans2);
return 0;
}