Cod sursa(job #3242588)

Utilizator mihaigeorgescuGeorgescu Mihai mihaigeorgescu Data 12 septembrie 2024 18:46:19
Problema Secv Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
#include <fstream>
#include <map>
using namespace std;
ifstream fcin("secv.in");
ofstream fout("secv.out");
int n,v[10001],d[10001],last[10001],minx;
map <int,int> mp;
int main()
{
    fcin>>n;
    minx=(1<<30);
     for(int i=1; i<=n; i++)
        fcin>>v[i], mp[v[i]]=1;
    map <int,int>::iterator k;
    int j=0;
    for(k=mp.begin(); k!=mp.end(); k++)
    {
        j++;
        k -> second = j;
    }
    for(int i=1; i<=n; i++)
        v[i]=mp[v[i]];
    for(int i=1; i<=n; i++)
    {
        if(v[i]==1)
        {
            d[i]=1;
            last[v[i]]=i;
        }
        else
        {
            if(last[v[i]-1]>0)
            {
                d[i]=d[last[v[i]-1]]+i-last[v[i]-1];
                last[v[i]]=i;
            }
        }
    }
    for(int i=1; i<=n; i++)
    {
        if(v[i]==j && d[i]!=0)
        {
            minx=min(minx,d[i]);
        }
    }
    if(minx==(1<<30))
        fout<<-1;
    else
        fout<<minx;
    return 0;
}