Cod sursa(job #1668756)

Utilizator MihneaGhiraMihnea MihneaGhira Data 30 martie 2016 00:50:36
Problema Secv Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<fstream>
#include<algorithm>
using namespace std;
ifstream fin("secv.in");
ofstream fout("secv.out");
int N,i,nrdis,j,minim;
int v[5001],d[5001],p[5001],w[5010];
int main(){
    fin>>N;
    for(i=1;i<=N;i++){
        fin>>v[i];
        w[i]=v[i];
    }
    sort(w+1,w+N+1);
    w[0]=2000000000;
    for(i=1;i<=N;i++)
        if(w[i]!=w[i-1])
            nrdis++;

     for(i=1;i<=N;i++){
        d[i]=1;
        p[i]=i;
        for(j=1;j<i;j++){
            if(v[j]>=v[i])
                continue;
            if(d[i]<d[j]+1){
                d[i]=d[j]+1;
                p[i]=p[j];
            }
            else{
                if(d[i]==d[j]+1){
                    p[i]=max(p[i],p[j]);
                }
            }
        }
    }
    minim=2000000000;
    for(i=1;i<=N;i++){
        if(d[i]==nrdis && minim>i-p[i]+1)
            minim=i-p[i]+1;
    }
    fout<<minim;
    return 0;
}