Cod sursa(job #1342455)

Utilizator badea_adi1999Badea Adrian Catalin badea_adi1999 Data 14 februarie 2015 01:12:05
Problema Secv Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <fstream>
#include <algorithm>
#define nmax 5015
#define inf 1<<20
using namespace std;
ifstream f("secv.in");
ofstream g("secv.out");
int v[nmax],v1[nmax],n;
int a[nmax],m,k;
int sol=inf;

int main()
{
    int i,j;

    f>>n;
    for (i=1;i<=n;i++){
            f>>v[i];
            v1[i]=v[i];
    }
    v1[0]=-1;
    sort(v1+1,v1+n+1);

    for (i=1;i<=n;i++)
        if (v1[i]!=v1[i-1])
            a[++m]=v1[i];
    if (m==1) sol=1;


    int st=1,dr=n;
    while (st<=dr) {
        int mid=(st+dr)>>1;
        bool ok=false;
        for (i=1;i+mid-1<=n;i++){

            if (v[i]==a[1]) {
                k=1;
                for (j=i+1;j<=i+mid-1;j++)
                        if (v[j]==a[k+1]) {
                                k++;
                                if (k==m){
                                    ok=true;
                                    break;
                                }
                        }
            }
        }
        if (ok==true) {
            sol=mid;
            dr=mid-1;
        }
        else
            st=mid+1;
    }
    if (sol!=inf)
        g<<sol;
    else
        g<<-1;
    return 0;
}