Cod sursa(job #1863011)

Utilizator Cosmin2004_InfoMoldoveanu Cosmin Cosmin2004_Info Data 30 ianuarie 2017 16:23:26
Problema Secv Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.58 kb
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>

using namespace std;
int v[5001],v1[5001],v2[5001];
int bs(int val , int k , int n){
   int med,st=k,dr=n;
   while(st<=dr)
   {
       med=(st+dr)/2;
       if(v2[med]==val)
       {
           return med;
       }
       else
           if(v2[med]<val)
              st=med+1;
           else
              dr=med-1;
   }
   return 0;
}

int main()
{
    freopen("secv.in","r",stdin);
    freopen("secv.out","w",stdout);
    int n,i,step,j,swap,last,k,l,lmin,val;
    scanf("%d", &n);
    for(i=1;i<=n;i++)
        {scanf("%d", &v1[i]);
         v[i]=v1[i];}
    for(step=0;step<n-1;++step)
    for (i = 1 ; i <= ( n - 1 ); i++)
    {
    for (j = 1 ; j <= n - i - 1; j++)
    {
      if (v1[j] >v1[j+1]) 
      {
        swap= v1[j];
        v1[j]= v1[j+1];
        v1[j+1]= swap;
      }
    }
    }
    k=1;
    for(i=1;i<=n;i++)
    {
        if(v1[i]!=v2[i-1])
            {v2[k]=v1[i];k++;}
    }
    k=1;v2[k]=v1[k];last=v1[k];
    for(i=2;i<=n;i++)
    {
        if(v1[i]!=last)
        {
            v2[++k]=v1[i];
            last=v1[i];
        }
    }
    lmin=n+1;
    for(i=1;i<=n;i++)
    {
        if(v[i]==1)
        {
            val=2;
            for(j=i+1;j<=n;j++)
            {
                val++;
                if(val==k+1)
                {
                    l=j-i+1;
                    if(l<lmin)lmin=l;
                    break;
                }
            }
        }
    }
    printf("%d\n", lmin);
    return 0;
}