Cod sursa(job #938017)

Utilizator sleepaholicNeculaescu Theodor sleepaholic Data 11 aprilie 2013 16:53:01
Problema Secv Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 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 );
}