Cod sursa(job #1089490)

Utilizator lilian_ciobanuLilian Ciobanu lilian_ciobanu Data 21 ianuarie 2014 18:48:47
Problema Secv Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<fstream>
#include<algorithm>
#include<map>


using namespace std;

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

int main(){
    int i,n,j,a[5005]={},b[5005]={},c[5005]={},d[5005],m=0,pos=0,x=0,y=0,mm=6000;
    map<int,int>t;
    f>>n;
    for(i=1; i<=n; ++i){
        f>>a[i];
        t[a[i]]++;
    }
    int val=t.size();
    for(i=n; i>=1; --i){
        b[i]=m+1;
        j=b[i]-1;
        while (j>0 && a[d[j]]<=a[i])
        {
            --j;
        }
        b[i]=j+1;
        d[b[i]]=i;
        c[i]=c[d[j]]; if (c[i]==0) c[i]=i;
        if(b[i]>m || (b[i]==m && (c[i]-i) <= mm )){
            m=b[i];
            mm=c[i]-i;
        }
    }




    if(m==val){

    /*
    for(i=1; i<=n; ++i){
        g<<b[i]<<" ";
    }
*/
            g<<mm+1;

    }
    else
        g<<"-1";
return 0;
}