Cod sursa(job #1132891)

Utilizator Impaler_009Mihai Nitu Impaler_009 Data 4 martie 2014 00:07:13
Problema Secv Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <fstream>
#include <algorithm>

using namespace std;

ifstream fin ("secv.in");
ofstream fout ("secv.out");

struct sor
{
    int x,i;
}v[5001];
int a[5001],val[5001],ans=5001,n,t;

bool cmp (sor a, sor b)
{
    return (a.x < b.x);
}

int main()
{
    fin>>n;

    if (n==0)
    {
        fout<<0;
        return 0;
    }

    for (int i=1; i<=n; ++i)
    {
        fin>>a[i];
        v[i].x = a[i];
        v[i].i = i;
    }

    sort (v+1,v+n+1,cmp);
    int minv = v[1].x;

    v[0].x = -1;

    for (int i=1; i<=n; ++i)
    {
        if (v[i].x != v[i-1].x)
        {
            val[++t] = v[i].x;
        }
    }

    for (int i=1; i<=n && v[i].x == minv; ++i)
    {
        int j = v[i].i+1, cnt = 2;

        for (; j<=n && cnt <= t; ++j)
        {
            if (a[j] == val[cnt])
                ++cnt;
        }

        if (cnt == t+1)
        {
            ans = min (ans,j-v[i].i);
        }
    }

    if (ans == 5001)
        fout<<-1;
    else fout<<ans;
}