Cod sursa(job #997985)

Utilizator poptibiPop Tiberiu poptibi Data 15 septembrie 2013 13:35:40
Problema Secv Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <cstdio>
#include <cstdlib>
#include <vector>
#include <algorithm>
using namespace std;

const int NMAX = 5005, INF = 0x3f3f3f3f;

int N, V[NMAX], Ans = INF;
vector<int> S, Unique;

int main()
{
    freopen("secv.in", "r", stdin);
    freopen("secv.out", "w", stdout);

    scanf("%i", &N);
    for(int i = 1; i <= N; ++ i)
        scanf("%i", &V[i]), S.push_back(V[i]);

    sort(S.begin(), S.end());
    Unique.push_back(S[1]);

    for(int i = 1; i < S.size(); ++ i)
        if(S[i] != S[i - 1])
            Unique.push_back(S[i]);

    for(int i = 1; i <= N; ++ i)
        if(V[i] == Unique[0])
        {
            int Cnt = 1, j = i + 1;
            while(j <= N && Cnt < Unique.size())
            {
                if(V[j] == Unique[Cnt]) Cnt ++;
                j ++;
            }
            j --;

            if(Cnt == Unique.size()) Ans = min(Ans, j - i + 1);
        }

    if(Ans == INF) printf("-1\n");
    else printf("%i\n", Ans);

    return 0;
}