Cod sursa(job #1192715)

Utilizator apopeid15Apopei Daniel apopeid15 Data 29 mai 2014 16:49:12
Problema Secv Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <cstdio>
#include <algorithm>
#define nmax 5001
#define M 2000000
using namespace std;
FILE *in=fopen("secv.in","r");
FILE *out=fopen("secv.out","w");
int n,v[nmax],x[nmax],s[nmax],i,k,c,p1,p2,minim,j;
int main()
{
    fscanf(in,"%d",&n);
    for(i=1;i<=n;i++){
        fscanf(in,"%d",&v[i]);
        s[i]=v[i];
    }
    sort(s+1,s+n+1);
    if(s[1]==s[n])
        fprintf(out,"1\n");
    else{
    k=1;
    x[1]=s[1];
    for(i=2;i<=n;i++)
        if(s[i]!=s[i-1])
            x[++k]=s[i];
    minim=M;
    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!=M)
        fprintf(out,"%d",minim);
    else if(minim==M)
            fprintf(out,"-1");
    }
    return 0;
}