Cod sursa(job #1221780)

Utilizator rangerChihai Mihai ranger Data 21 august 2014 14:22:19
Problema Secv Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<fstream>
#include<algorithm>
using namespace std;
const int nmax = 5010;

ifstream cin("secv.in");
ofstream cout("secv.out");

int n,a[nmax],b[nmax],t[nmax],aux[nmax],sol=nmax;

int main()
{
    cin>>n;
    for (int i=1;i<=n;i++) cin>>a[i],aux[i]=a[i];
    sort(aux+1,aux+n+1);
    aux[0]=-1;
    int nrdis=0;
    for (int i=1;i<=n;i++)
        if (aux[i]!=aux[i-1]) ++nrdis;
    for (int i=1;i<=n;i++)
        t[i]=i,b[i]=1;
    b[1]=1;
    for (int i=2;i<=n;i++) {
        for (int j=1;j<=i-1;j++)
            if (a[i]>a[j])
            if (b[j]+1>b[i] || (b[j]+1==b[i] && t[j]>t[i]))
             b[i]=b[j]+1, t[i]=t[j];
        if (b[i]==nrdis)
            sol=min(sol,i-t[i]+1);
    }
    cout<<sol;
    return 0;
}