Cod sursa(job #1183414)

Utilizator xtreme77Patrick Sava xtreme77 Data 9 mai 2014 00:12:10
Problema Secv Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <cstdio>
#include <unordered_map>
#include <algorithm>
#define MAX 5111
using namespace std;
#define min(a,b) (((a)<(b))?(a):(b))
unordered_map <int,int> hashin;
int nr,v[MAX],newvec[MAX],ans=MAX*MAX;
int main()
{
    int n;
    freopen("secv.in","r",stdin);
    freopen("secv.out","w",stdout);
    scanf("%d",&n);
    for(int i=1;i<=n;++i){
        scanf("%d",v+i);
        hashin[v[i]]+=1;
    }
    for (auto local_it = hashin.begin(); local_it!= hashin.end(); ++local_it )newvec[++nr]=local_it->first;
    sort(newvec+1,newvec+nr+1);
    for(int i=1;i<=n;++i)
        if(v[i]==newvec[1]){
        int now=2;
        int j=i+1;
        for( ;now<=nr and j<=n;++j)
            if(newvec[now]==v[j])++now;
        if(now==nr+1)
            ans=min(ans,j-i);
    }
    printf("%d\n",(ans!=MAX*MAX)?ans:-1);
    return 0;
}