Cod sursa(job #1728913)

Utilizator tziplea_stefanTiplea Stefan tziplea_stefan Data 13 iulie 2016 20:27:06
Problema Secv Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>
#include <algorithm>
#include <unordered_map>
#define VAL 5005
#define INF 1000000

using namespace std;

ifstream fin("secv.in");
ofstream fout("secv.out");

int N, i, K;
int v[VAL], x[VAL];
int last[VAL], mn;
unordered_map<int, int> poz;

int main()
{
    fin >> N;
    for (i=1; i<=N; i++)
    {
        fin >> v[i];
        x[i]=v[i];
    }
    sort(x+1, x+N+1);
    for (i=1; i<=N; i++)
      if (poz[x[i]]==0)
        poz[x[i]]=++K;
    mn=INF;
    for (i=1; i<=N; i++)
    {
        if (poz[v[i]]==1)
          last[poz[v[i]]]=i;
        else
          last[poz[v[i]]]=last[poz[v[i]]-1];
        if (poz[v[i]]==K)
          mn=min(mn, i-last[K]+1);
    }
    if (mn==INF)
      mn=-1;
    fout << mn << '\n';
    fin.close();
    fout.close();
    return 0;
}