Cod sursa(job #2892632)

Utilizator NutaAlexandruASN49K NutaAlexandru Data 22 aprilie 2022 21:57:30
Problema Secv Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.21 kb
#import<fstream>
#import<algorithm>
#import<cstring>
#import<vector>
#import<set>
#import<queue>
#import<set>
#import<bitset>
using namespace std;
ifstream cin("secv.in");
ofstream cout("secv.out");
main()
{
    int n;
    cin>>n;
    vector<int>a(n+1,0);
    vector<int>loc,nr;
    set<int>v;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        v.insert(a[i]);
    }
    while(v.size()!=0)
    {
        loc.push_back(-1);
        nr.push_back(*v.begin());
        v.erase(v.begin());
    }
    int rez=2e9;
    for(int i=1;i<=n;i++)
    {
        int st=1,dr=nr.size(),lc=0;
        while(st<=dr)
        {
            int m=(st+dr)>>1;
            if(nr[m]>a[i])
            {
                dr=m-1;
            }
            else if(nr[m]<a[i])
            {
                st=m+1;
            }
            else
            {
                lc=m;
                break;
            }
        }
        if(!lc)
        {
           loc[lc]=i;
        }
        else if(loc[lc-1]!=-1)
        {
            loc[lc]=loc[lc-1];
        }
        if(lc==nr.size()-1 && loc[lc]!=-1)
        {
            rez=min(rez,i-loc[lc]+1);
        }
    }
    cout<<rez;

}