Cod sursa(job #1206075)

Utilizator tudi98Cozma Tudor tudi98 Data 8 iulie 2014 21:03:52
Problema Secv Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
#include <set>
using namespace std;

int a[5001],best[5001],pre[5001];
set<int> S;

inline int Sum(int a,int b){
    return (a>b?b:a);
}

int main(){

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

    int n,Sum=5001;
    f >> n;
    for(int i=1;i<=n;i++){
        f >> a[i];
        S.insert(a[i]);
    }
    int N=int(S.size());
    bool ok=0;
    for(int i=2;i<=n;i++){
        for(int j=i-1;j>=1;j--){
            if(a[i]>a[j] && best[i]<best[j]+1){
                best[i]=best[j]+1;
                if(!pre[j]) pre[i]=j;
                else pre[i]=pre[j];
            }
        }
        if(best[i]==N-1){
            ok=1;
            Sum=min(i-pre[i]+1,Sum);
        }
    }

    if(!ok) g << -1 <<"\n";
    else g << Sum <<"\n";
}