Cod sursa(job #2927411)

Utilizator cezarinfoTulceanu Cezar cezarinfo Data 20 octombrie 2022 13:52:36
Problema Secv Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb
#include<cstdio>
#include<vector>
#include<map>
#include<algorithm>
using namespace std;
FILE*in=fopen("secv.in","r");
FILE*out=fopen("secv.out","w");
const int NMAX=5007,INF=2000000007;
int n,i,v[NMAX],its,itd,hm,ct,lmin=INF;
bool as;
vector<int> w;
map<int,bool> m;
map<int,int> bo;
bool pus()
{
    while(hm<ct)
    {
        itd++;
        if(itd>n)
        {
            return 1;
        }
        if(bo[v[itd]]==0)
        {
            hm++;
        }
        bo[v[itd]]++;
    }
    as=1;
    lmin=min(lmin,itd-its+1);
    return 0;
}
int main()
{
    fscanf(in,"%d",&n);
    for(i=1;i<=n;i++)
    {
        fscanf(in,"%d",&v[i]);
        if(m[v[i]]==0)
        {
            w.push_back(v[i]);
            m[v[i]]=1;
            ct++;
        }
    }
    its=1;
    itd=1;
    bo[v[1]]=1;
    hm=1;
    while(pus()==0)
    {
        bo[v[its]]--;
        if(bo[v[its]]==0)
        {
            hm--;
        }
        its++;
    }
    if(as==0)
    {
        fprintf(out,"-1");
    }
    fprintf(out,"%d",lmin);
}