Cod sursa(job #1852239)

Utilizator raisacmtAxenie Raisa raisacmt Data 20 ianuarie 2017 17:03:56
Problema Secv Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <cstdio>
#include<algorithm>
using namespace std;
int v[5005];
struct secv
{
    int x,y;
};
secv v1[5005];
bool cmp(secv a,secv b)
{
    return a.x<b.x;
}
int v2[5005];
int main()
{
    freopen("secv.in","r",stdin);
    freopen("secv.out","w",stdout);
    int n,i,j,k,min,max,st,dr,val,l;
    scanf("%d",&n);
    for(i=1; i<=n; i++){
    scanf("%d",&v[i]);
    v1[i].x=v[i];
    v1[i].y=i;
    }
    sort(v1+1,v1+n+1,cmp);
    j=1;
    v1[0].x=v1[1].x;k=0;
    for(i=1; i<=n; i++)
    {
        if(v1[i].x!=v1[i-1].x)
        j++;
        if(j==1)
        v2[++k]=v1[i].y;
        v[v1[i].y]=j;
    }
    max=j;
    min=5001;
    for(i=1; i<=k; i++)
    {
        st=v2[i];
        dr=st;
        val=v[st];
        while(dr<=n  && val!=max){
        val++;
        while(v[dr]!=val && dr<=n)
            dr++;;
        if(dr>n)
        break;
        if(val==max)
        {
            l=dr-st+1;
            if(l<min)
            min=l;
            break;
        }

        }
    }
    if(min==5001)
    min=-1;
    printf("%d",min);
    return 0;
}