Cod sursa(job #918527)

Utilizator PatrikStepan Patrik Patrik Data 18 martie 2013 22:30:20
Problema Secv Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.32 kb
    #include<cstdio>
    #include<algorithm>
    #include<vector>
    using namespace std;
    #define MAX 5001
    #define pb push_back
    int N , A[MAX]  , minn ;
    bool sw;
    vector<int> v;

    void citire();
    void solve();
    void tipar();

    int main()
    {
        citire();
        solve();
        tipar();
        return 0;
    }

    void citire()
    {
        freopen("secv.in" , "r" , stdin );
        scanf("%d" , &N );
        for( int i = 1 ; i <= N ; ++i )
        {
            scanf("%d" , &A[i]);
            v.pb(A[i]);
        }
    }

    void solve()
    {
        minn = N+1;
        sort(v.begin(),v.end());
        v.erase(unique(v.begin(),v.end()),v.end());
        sw = 0;
        for(int i = 1 ; i <= N-(int)v.size()+1 ; ++i)
            {
                if(A[i]!=v[0])
                    continue;
                int p = 1 , j;
                for(j = i+1 ; j <= N && p < (int)v.size() ; ++j )
                    if(A[j]==v[p])p++;
                if(p == (int)v.size())
                {
                    sw = 1;
                    if(j-i < minn )minn = j-i;
                }
            }
    }

    void tipar()
    {
        freopen("secv.out" , "w" , stdout );
        if(!sw)printf("-1");
        else printf("%d" , minn );
    }