Cod sursa(job #2034802)

Utilizator VladAfrasineiAfrasinei VladAfrasinei Data 8 octombrie 2017 14:35:40
Problema Secv Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("secv.in");
ofstream fout("secv.out");
int n,a[5001],b[5001],ct;
map <int,int> m;
map <int,int> t;
int lg[5001],nr[5001];
int main()
{
    int i;
fin>>n;
for(i=1;i<=n;i++)
    {fin>>a[i];
    nr[i]=-1;
    m[a[i]]++;
    if(m[a[i]]==1)
    b[++ct]=a[i];
    }
sort(b+1,b+ct+1);
for(i=1;i<=ct;i++)
    m[b[i]]=i;
for(i=1;i<=n;i++)
{
    if(a[i]==b[1])
    {
        nr[1]=i;
        lg[i]=1;
    }
    else
        if(nr[m[a[i]]-1]!=-1)
            {
                nr[m[a[i]]]=i;
                lg[i]=(i-nr[m[a[i]]-1])+lg[nr[m[a[i]]-1]];
            }
}
if(nr[ct]==-1)
    fout<<-1;
else
{int mini=9999;
for(i=1;i<=n;i++)
    if(a[i]==b[ct]&&nr[ct]!=-1)
        if(lg[i]<mini)
            mini=lg[i];
fout<<mini;
}
    return 0;
}