Cod sursa(job #1728902)

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

using namespace std;

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

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

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