Cod sursa(job #1574849)

Utilizator ialexia_ioanaAlexia Ichim ialexia_ioana Data 20 ianuarie 2016 21:34:36
Problema Secv Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <cstdio>
#include <algorithm>

using namespace std;

struct numar
{
    int x, poz;
};
numar aux[5005];

int v[5005], last[5005];

bool cmp(numar a, numar b)
{
    return a.x < b.x;
}

int main()
{
    freopen("secv.in", "r", stdin);
    freopen("secv.out", "w", stdout);
    int n, nr, i;
    scanf("%d", &n);
    for(i=1; i<=n; i++)
    {
        scanf("%d", &v[i]);
        aux[i].x=v[i];
        aux[i].poz=i;
    }
    sort(aux+1, aux+n+1, cmp);
    v[aux[1].poz]=nr=1;
    for(i=2; i<=n; i++)
    {
        if (aux[i].x!=aux[i - 1].x)
            nr++;
        v[aux[i].poz]=nr;
    }
    int minim=-1;
    for(i=1; i<=n; i++)
    {
        if (v[i]==1)
            last[1]=i;
        else
        {
            if (last[v[i]-1]!=0)
                last[v[i]]=last[v[i]-1];
        }
        if(v[i] == nr && last[nr]!=0)
        {
            if (i-last[nr]+1<minim || minim==-1)
                minim=i-last[nr]+1;
        }
    }
    if (n!=0)
        printf("%d\n", minim);
    return 0;
}