Cod sursa(job #2491067)

Utilizator stefan1anubystefan popa stefan1anuby Data 11 noiembrie 2019 19:09:45
Problema Secv Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <fstream>
#include <unordered_map>
#include <algorithm>

using namespace std;
ifstream cin("secv.in");
ofstream cout("secv.out");

unordered_map <int, int > M;

int n,v[5005],aux[5005];
int main()
{
    int i,nr,Max,j,sol=9999999;
    cin>>n;
    for(i=1; i<=n; i++)
    {
        cin>>v[i];
        aux[i]=v[i];
    }
    sort(aux+1,aux+n+1);
    nr=0;
    for(i=1; i<=n; i++)
    {
        if(aux[i]!=aux[i-1])
        {
            nr++;
            M[aux[i]]=nr;
        }
    }
    for(i=1; i<=n; i++)
        v[i]=M[v[i]];
    Max=nr;
    for(i=1; i<=n; i++)
    {
       if(v[i]==1)
       {
           nr=1;
           for(j=i+1; nr!=Max && j<=n;j++)
           {
               if(v[j]==nr+1)
               {
                   nr++;
               }
           }
           if(nr==Max) sol=min(sol,j-i);
       }
    }
    if(sol!=9999999) cout<<sol;
    else cout<<-1;
    return 0;
}