Cod sursa(job #1847711)

Utilizator victoreVictor Popa victore Data 14 ianuarie 2017 22:07:42
Problema Secv Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <cstdio>
#include<algorithm>
using namespace std;
int v[5005];
struct nr
{
        int x,poz;
}sortat[5005];
bool cmp(nr a,nr b)
{
    return a.x<b.x;
}
int main()
{
    freopen("secv.in","r",stdin);
    freopen("secv.out","w",stdout);
    int n,i,j,st,dr,lmin;
    st=dr=1;
    scanf("%d",&n);
    lmin=n+1;
    for(i=1;i<=n;i++)
    {
        scanf("%d",&sortat[i].x);
        sortat[i].poz=i;
    }
    sort(sortat+1,sortat+n+1,cmp);
    int d=0,a,b;
    sortat[0].x=-1;
    for(i=1;i<=n;i++)
    {
        if(sortat[i].x!=sortat[i-1].x)
            d++;
        v[sortat[i].poz]=d;
    }
    for(dr=d;dr<=n;dr++)
    {
        if(v[dr]==d)
        {
            a=d;
            for(st=dr;st>0;st--)
            {
                if(v[st]==a)
                    a--;
                if(!a)
                    break;
            }
            if(!a&&(dr-st+1)<lmin)
                lmin=dr-st+1;
        }
    }
        if(lmin==n+1)
        lmin=-1;
    printf("%d",lmin);
}