求助TLE!
查看原帖
求助TLE!
1333559
zqw1234楼主2024/12/24 18:05
#include<bits/stdc++.h>
using namespace std;
const int maxn = 10101010;
int dp_down[maxn], dp_up[maxn], a[maxn], ans_down = -1, ans_up = -1, n;
int main(){
    while(cin>>a[++n]) dp_down[n] = dp_up[n] = 1;
    n--;
    for(int i = 2; i <= n; i++){
        for(int j = 1; j < i; j++){
            if(a[j] >= a[i]) dp_down[i] = max(dp_down[i], dp_down[j] + 1);
            if(a[j] < a[i]) dp_up[i] = max(dp_up[i], dp_up[j] + 1);
        }
    }
    for(int i = 1; i <= n; i++){
        ans_down = max(dp_down[i], ans_down);
        ans_up = max(dp_up[i], ans_up);
    }
    cout<<ans_down<<endl<<ans_up;
    return 0;
}

不是O(n2)O(n^2)也过不了吗?

2024/12/24 18:05
加载中...