Cod sursa(job #1545474)

Utilizator Julian.FMI Caluian Iulian Julian. Data 6 decembrie 2015 19:34:00
Problema Secv Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#define nmax 5050
#define inf 2000000004
using namespace std;
ifstream fin("secv.in");
ofstream fout("secv.out");
long l[nmax],f[nmax],v[nmax],aux[nmax];
int main()
{long i,j,n,minim=inf,maxim=-inf;
    fin>>n;
    for(i=1;i<=n;i++)
    {
        fin>>v[i];
        if(v[i]<minim)minim=v[i];
        if(v[i]>maxim)maxim=v[i];
    }
    l[n]=1;f[n]=n;
    for(i=n-1;i;i--)
        for(l[i]=1,f[i]=i,j=i+1; j<=n; j++)
         if(v[i]<v[j])
            if(l[i]<l[j]+1)
            {l[i]=l[j]+1;f[i]=f[j];}
for(i=1;i<=n;i++)aux[i]=v[i];
sort(aux+1,aux+n+1);
long cont=0;
i=1;
    while(i<=n)
    {cont++;
    while(aux[i]==aux[i+1] && i<=n)i++;
        i++;
    }

int rez=inf;
   for(i=1;i<=n;i++)
        if(v[i]==minim && v[f[i]]==maxim && l[i]==cont)
            if(f[i]-i+1 < rez){rez=f[i]-i+1;}
if(n==0)fout<<0;
else if(rez!=inf)fout<<rez;
   else fout<<-1;
}