Cod sursa(job #2220780)

Utilizator patcasrarespatcas rares danut patcasrares Data 12 iulie 2018 15:03:43
Problema Secv Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<fstream>
#include<cstring>
#include<iostream>
#include<stack>
#include<algorithm>
#include<unordered_map>
#define DN 5005
#define DM 800005
#define M 666013
#define x first
#define y second
using namespace std;
ifstream fin("secv.in");
ofstream fout("secv.out");
int n,a[DN],pr,ur=1,dp[DN],mi=1e9,b[DN],m;
unordered_map<int,int>mp;
int main()
{
    fin>>n;
    for(int i=1;i<=n;i++)
    {
        fin>>a[i];
        if(mp.find(a[i])==mp.end())
        {
            m++;
            b[m]=a[i];
            mp[a[i]]=1;
        }
    }
    sort(b+1,b+m+1);
    for(int i=1;i<=m;i++)
        mp[b[i]]=i;
    for(int i=1;i<=n;i++)
        a[i]=mp[a[i]];
    for(int i=1;i<=n;i++)
    {
        if(a[i]==1)
            dp[1]=i;
        else
            dp[a[i]]=dp[a[i]-1];
        if(a[i]==m&&dp[a[i]])
            mi=min(mi,i-dp[a[i]]+1);
    }
    if(mi==1e9)
        mi=-1;
    fout<<mi;
}