CCCPaste

Untitled

#include 
#include 
#include 

using namespace std;
const int maxn = 5005;
int a[maxn], dp[maxn];
int n;

int rec(int at) {
    if(dp[at] != -1) {
        return dp[at];
    }
    int res = 1;
    for(int i = at + 1; i < n; i++) {
        if(abs(a[at]) < abs(a[i])) {
            if((a[at] > 0 and a[i] < 0) or (a[at] < 0 and a[i] > 0)) {
                res = max(res, rec(i) + 1);
            }
        }
    }
    return dp[at] = res;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin >> n;
    
    for(int i = 0; i < n; i++) {
        cin >> a[i];
        dp[i] = -1;
    }
    int res = 0;
    for(int i = 0; i < n; i++) {
        res = max(res, rec(i));
    }
    cout << res << endl;
    return 0;
}