Cod sursa(job #1862998)

Utilizator mihai2003LLL LLL mihai2003 Data 30 ianuarie 2017 16:18:23
Problema Secv Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.31 kb
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int v[5005],v2[5005],vc[5005],cont[5005],bin[5005],n,j,poz[5005];
ifstream in("secv.in");
ofstream out("secv.out");
int bs(int k)
{
    int l,r,med=1;
    l=0;
    r=j-1;
    while(l<=r)
    {
        med=(r+l)/2;
        if(vc[med]==k)
            return med;
        if(vc[med]<k)
            l=med+1;
        else
            r=med-1;
    }
    return -1;
}
int main()
{
    int lc=0,smax=1000000,nr,ci;
    in>>n;
    for(int i=1; i<=n; i++)
        in>>v[i],v2[i]=v[i];
    sort(v2+1,v2+n+1);
    for(int i=1; i<=n; i++)
        if(v2[i]>v2[i-1])
            vc[j++]=v2[i];
    for(int i=1; i<=n; i++)
        bin[i]=bs(v[i]);
    for(int i=1; i<=n; i++)
    {
        if(bin[i]==0)
        {
            int val,l;
            val=1;
            for(int r=i+1; r<=n; r++)
            {
                if(bin[r]==val)
                {
                    val++;
                    if(val==j)
                    {
                        l=r-i+1;
                        if(l<smax)
                        {
                            smax=l;
                            break;
                        }
                    }
                }
            }
        }
    }
    out<<smax;
    return 0;
}