Cod sursa(job #2063140)

Utilizator catalina200029Olteanu Catalina catalina200029 Data 11 noiembrie 2017 09:45:39
Problema Subsir 2 Scor 6
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f("subsir2.in");
ofstream g("subsir2.out");

int n,a[5005],l[5005],ilmax,nr,w[5005],ok;

bool valid(int i,int j) {
    int k;
    for (k=i+1;k<=j-1;k++)
        if (a[i]<a[k] && a[k]<a[j])
            return 0;
    return 1;
}

void solve() {
    int i,j,k,nrk;
    l[n]=1;
    for (i=n-1;i>=1;i--) {
        k=n+1;
        for (j=i+1;j<=n;j++)
            if (a[i]<a[j] && l[j]<k && valid(i,j))
                k=l[j];
        if (k==n+1) k=0;
        l[i]=1+k;
    }

    for (i=1;i<=n;i++) {
        ok=1;
        for (j=i+1;j<=n;j++)
            if (a[i]<a[j] && valid(i,j))
                if (l[i]<=l[j]) {
                    ok=0;
                    break;
                }
        if (ok && l[ilmax]<l[i]) ilmax=i;
    }
    g<<l[ilmax];

}

int main() {
    int i,j;
    f>>n;
    for (i=1;i<=n;i++)
        f>>a[i];
    solve();
    return 0;
}