Cod sursa(job #1327045)

Utilizator ade_tomiEnache Adelina ade_tomi Data 26 ianuarie 2015 12:31:20
Problema Secv Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include<stdio.h>
#include<algorithm>
using namespace std;
int d[5005],i,nr,j,sol,ok,n;
struct str
{
    int x,poz;
};
str v[5005];
bool sortare1(str a , str b)
{
    return a.x<b.x;

}
bool sortare2(str a, str b)
{
    return a.poz<b.poz;
}
int main()
{
    freopen("secv.in","r",stdin);
    freopen("secv.out","w",stdout);
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        scanf("%d",&v[i].x);
        v[i].poz=i;
    }
    sort(v+1,v+1+n,sortare1);
    for(i=1;i<=n;i++)
    {
        if(v[i].x!=v[i-1].x)
        {
            nr++;
        }
        v[i].x=nr;
    }
    sort(v+1,v+1+n,sortare2);
    sol=n+1;
    for(i=1;i<=n;i++)
    {
        ok=0;
        if(v[i].x!=1)
        {
            for(j=i-1;j>=1;j--)
            {

                if(v[j].x==v[i].x-1&&d[j]!=0)
                {
                    ok=d[j];
                    break;
                }
            }
            d[i]=ok;
        }
        else d[i]=i;
      //  printf("%d ",d[i]);
       // d[i]=ok;
        if(v[i].x==nr&&i-d[i]+1<sol&&d[i]!=0)
                sol=i-d[i]+1;

    }
    if(sol==n+1)
        printf("-1");
    else printf("%d",sol);
    return 0;
}