Cod sursa(job #2327491)

Utilizator MAXIMILLIANMUSOHYEAHYEAH MAXIMILLIANMUS Data 24 ianuarie 2019 19:13:25
Problema Secv Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <bits/stdc++.h>
 
using namespace std;
 
ifstream f("secv.in");
ofstream g("secv.out");
 
int n,i,a[5010],dr[5010];
pair<int,int> b[5010];
 
int main()
{
    f>>n;
    for(i=1;i<=n;i++)
    {
        f>>a[i];
        b[i]={a[i],i};
    }
    sort(b+1,b+n+1);
    a[b[1].second]=1;
    for(i=2;i<=n;i++)
        if(b[i].first==b[i-1].first)
            a[b[i].second]=a[b[i-1].second];
        else
            a[b[i].second]=a[b[i-1].second]+1;
    int Max=a[b[n].second],ans=n+1;
    if(Max==1)
    {
        g<<1;
        return 0;
    }
    for(i=1;i<=n;i++)
        if(a[i]==1)
            dr[1]=i;
        else
            if(a[i]!=Max)
                dr[a[i]]=max(dr[a[i]],dr[a[i]-1]);
            else
                if(dr[a[i]-1])
                    ans=min(ans,i-dr[a[i]-1]+1);
    if(ans==n+1)
        g<<-1;
    else
        g<<ans;
    return 0;
}