Cod sursa(job #1121526)

Utilizator robx12lnLinca Robert robx12ln Data 25 februarie 2014 13:07:19
Problema Secv Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 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], s[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]);
        s[i]=v[i];
    }
    sort(s+1,s+n+1);
    if(s[1]==s[n])
    {
        fprintf(fout, "1\n");
        return 0;
    }
    k=1;
    x[1]=s[1];
    for(i=2;i<=n;i++)
        if(s[i]!=s[i-1])
            x[++k]=s[i];
    minim=2000000;
    for(i=1;i<=n;i++){
        c=1;
        if(v[i]==x[c]){
            p1=i;
            c++;
            for(j=i;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;
}