Cod sursa(job #2771429)

Utilizator maria_neagoieMaria Neagoie maria_neagoie Data 27 august 2021 12:08:18
Problema Secv Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <cstdio>
#include <set>
using namespace std;
const int NMAX=5005;
int v[NMAX];
set <int> multime;
set <int> :: iterator it;
int main()
{
    freopen("secv.in","r",stdin);
    freopen("secv.out","w",stdout);
    int n,i,lmin=NMAX,st,dr;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        scanf("%d",&v[i]);
        multime.insert(v[i]); //sirul cresc cu toate nr din sirul init o singura data
    }
    for(st=1;st<=n;st++) //subsecv incepe de la pozitia st
    {
        it=multime.begin(); //cautam val din multime in ordine cresc
        for(dr=st;dr<=n && it!=multime.end();dr++) //subsecventa dintre poz st-dr
        {
            if(v[dr]==(*it))
                it++; //cautam urmatoarea val din multime
        }
        dr--; //am crescut dr la final cand nu s-a mai indeplinit cond
        if(it==multime.end()) //in subsecv st-dr am gasit sirul cautat (multime)
            lmin=min(lmin,dr-st+1);
    }
    if(lmin==NMAX) //nu exista secv care sa contina toate elem mult
        printf("-1");
    else
        printf("%d",lmin);
    fclose(stdin);
    fclose(stdout);
    return 0;
}