Cod sursa(job #1121484)

Utilizator robx12lnLinca Robert robx12ln Data 25 februarie 2014 12:58:50
Problema Secv Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include<cstdio>
#include<algorithm>
using namespace std;
FILE * fin=fopen("secv.in","r");
FILE * fout=fopen("secv.out","w");
int n,v[5001],x[5001],i,k,c,p1,p2,minim,j;
int main(){
    fscanf(fin,"%d",&n);
    for(i=1;i<=n;i++){
        fscanf(fin,"%d",&v[i]);
        x[i]=v[i];
    }
    sort(x+1,x+n+1);
    k=1;
    for(i=1;i<=n;i++){
        if(x[i]!=x[k]){
            k++;
            x[k]=x[i];
        }
    }
    c=1;
    minim=2000000;
    for(i=1;i<=n;i++){
        if(v[i]==x[c]){
            p1=i;
            c++;
            for(j=i+1;j<=n;j++){
                if(v[j]==x[c]){
                    c++;
                    if(c==k+1){
                        p2=j;
                        break;
                    }
                }
            }
            if(c-1==k){
                if(minim>p2-p1+1){
                    minim=p2-p1+1;
                }
            }
        }
    }
    if(minim!=2000000){
        fprintf(fout,"%d",minim);
    }else{
        if(minim==2000000){
            fprintf(fout,"-1");
        }
    }
    return 0;
}