Cod sursa(job #2063197)

Utilizator catalina200029Olteanu Catalina catalina200029 Data 11 noiembrie 2017 10:10:01
Problema Subsir 2 Scor 12
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <bits/stdc++.h>

using namespace std;

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

int n,a[5005],l[5005],lmax,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;
    }
    lmax=n+1;
    //for (i=1;i<=n;i++)
      //  cout<<l[i]<<' ';
    for (i=n;i>=1;i--) {
        ok=1;
        for (j=1;j<=i-1;j++)
            if (a[j]<a[i]) ok=0;
        if (ok && lmax>l[i]) lmax=l[i];
    }
    g<<lmax;
}

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