Cod sursa(job #994700)

Utilizator gbi250Gabriela Moldovan gbi250 Data 6 septembrie 2013 01:05:53
Problema Secv Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <cstdio>
#include <algorithm>
using namespace std;

int n, i, j, k=1, len, MIN=0x3f3f3f3f, pos, v[5001], v_sorted[5001], v_unique[5001];
bool sw;

int main()
{
    freopen("secv.in", "r", stdin);
    freopen("secv.out", "w", stdout);
    scanf("%d", &n);
    for(i=1; i<=n; ++i)
    {
        scanf("%d", &v[i]);
        v_sorted[i]=v[i];
    }
    if(n==1)
        sw=1, MIN=1;
    else
    {
        sort(v_sorted+1, v_sorted+n+1);

        v_unique[1]=v_sorted[1];
        for(i=2; i<=n; ++i)
            if(v_sorted[i]!=v_unique[k])
                v_unique[++k]=v_sorted[i];

        for(i=1; i<=n; ++i)
            if(v[i] == v_unique[1])
            {
                len=1; pos=2;
                for(j=i+1; j<=n; ++j)
                {
                    ++len;
                    if(v[j] == v_unique[pos])
                        ++pos;

                    if(pos == k+1)
                    {
                        if(len<MIN)
                            MIN=len, sw=1;
                        break;
                    }
                }
            }
    }
    if(sw)
        printf("%d\n", MIN);
    else
        printf("-1\n");
    return 0;
}