Cod sursa(job #1080714)

Utilizator sebinechitasebi nechita sebinechita Data 12 ianuarie 2014 20:18:20
Problema Secv Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.46 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ofstream fout("secv.out");
#define MAX 5010

FILE *fin=fopen("secv.in", "r");
unsigned const maxb=8192;
char buf[maxb];
int ptr=maxb-1;

int getInt()
{
    int nr=0;
    while(buf[ptr]>'9' || buf[ptr]<'0')
        if(++ptr>=maxb)
            fread(buf, maxb, 1, fin), ptr=0;
    while(buf[ptr]<='9' && buf[ptr]>='0')
    {
        nr=nr*10+buf[ptr]-'0';
        if(++ptr>=maxb)
            fread(buf, maxb, 1, fin), ptr=0;
    }
    return nr;
}

int n, a[MAX], i, k, b[MAX], j;

int main()
{
    n=getInt();

    for(i=1;i<=n;i++)
    {
        b[i]=getInt();
        a[i]=b[i];
    }
    sort(a+1,a+n+1);
    k=0;
    a[0]=-1;
    for(i=1;i<=n;i++)
    {
        if(a[k]!=a[i])
        {
            a[++k]=a[i];
        }
    }
    int lung=n+1;
    if(k<=1)
    {
        fout<<k<<"\n";
        return 0;
    }
    for(i=1;i<=n;i++)
    {
        if(b[i]==a[1])
        {
            int s=2;
            for(j=i+1;j<=n;j++)
            {
                if(b[j]==a[s])
                    s++;
                if(s==k+1)
                    break;
            }
            if(s==k+1)
            {
                if(lung>j-i+1)
                {
                    lung=j-i+1;

                }
            }
        }
    }
    if(lung==n+1)
    {
        fout<<-1<<"\n";
        return 0;
    }
    fout<<lung<<" ";
}