Cod sursa(job #946497)

Utilizator alex_HarryBabalau Alexandru alex_Harry Data 4 mai 2013 16:21:40
Problema Secv Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.45 kb
#include<fstream>
#include<algorithm>
using namespace std;
ifstream f("secv.in");
ofstream g("secv.out");
int n,a[5005],v[5005],nb[5005],k,minimum=5005,poz[5005],len;
void read()
{
    int i;
    f>>n;
    for(i=0;i<n;i++)
    {
        f>>a[i];
        v[a[i]]++;
        if(v[a[i]]==1)
            nb[k++]=a[i];
    }
    sort(nb,nb+k);
    for(i=0;i<n;i++)
        if(a[i]==nb[0])
           poz[len++]=i;
}
void calculate()
{
    /*while(i<n)
    {
        if(a[i]==searched)
        {
            searched=nb[j++];
            if(j>k)
                minimum=i;
        }
        i++;
    }
    limit=i;
    if(minimum==5005)
    {
        g<<-1<<"\n";
        return;
    }
    i=1;
    limit++;
    j=0;
    while(i<n)
    {
        if(a[i-1]==nb[0])
            searched=nb[0];

    }*/
    int i;
    for(i=0;i<len;i++)
    {
        int j=poz[i]+1,ind=1,searched=nb[ind];
        bool yes=0;
        while(j<n)
        {
            if(a[j]==searched)
            {
                ind++;
                searched=nb[ind];
                if(ind>=k)
                {
                    if(minimum>j-i)
                        minimum=j-i;
                    yes=1;
                }
            }
            j++;
        }
        if(yes==0)
            break;
    }
    if(minimum==5005)
        g<<-1<<"\n";
    else
        g<<minimum<<"\n";
}
int main()
{
    read();
    calculate();
}