Cod sursa(job #1852097)

Utilizator patrickdanDan patrick patrickdan Data 20 ianuarie 2017 15:55:54
Problema Secv Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <cstdio>
#include<algorithm>
using namespace std;
int v[5005];
int v2[5005];
int f[5005];
int main()
{
    freopen("secv.in","r",stdin);
    freopen("secv.out","w",stdout);
    int n,i,j,max=0,st,dr,min=5001,k,iden;
    scanf("%d",&n);
    for(i=1;i<=n;i++){
        scanf("%d",&v[i]);
        v2[i]=v[i];
    }
    sort(v2+1,v2+n+1);
    for(i=1;i<=n;i++)
    {
        j=1;
        iden=0;
        while(j<=n && v[i]!=v2[j]){
        if(v2[j]==v2[j+1])
          iden++;
         j++;
        }
        v[i]=j-iden;
        if(j-iden>max)
            max=j-iden;
    }
    for(i=1;i<=n;i++)
    {
        if(v[i]==1)
        {
            k=2;
            for(j=i+1;j<=n;j++)
            {
                if(v[j]==k)
                    k++;
                if(k==max+1){
                if(j-i<min)
                  min=j-i;
                  break;
                }
            }
        }
    }
    if(min==5001)
        printf("-1");
    else
      printf("%d",min);
    return 0;
}