Cod sursa(job #2657854)

Utilizator pregoliStana Andrei pregoli Data 12 octombrie 2020 14:47:52
Problema Secv Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <bits/stdc++.h>
using namespace std;
#define STOP fclose(fout); exit(EXIT_SUCCESS);
FILE *fin = fopen("secv.in", "r");
FILE *fout = fopen("secv.out", "w");
///***********************
const int NMAX = 5e3 + 3;
int n, v[NMAX], uniq[NMAX], k, ans = NMAX;

void read() {
    fscanf(fin, "%d", &n);
    for (int i = 1; i <= n; i++)
        fscanf(fin, "%d", &v[i]);
}

void makeUniq() {
    k = 1;
    uniq[1] = v[1];
    for (int i = 2; i <= n; i++)
        if (v[i] != v[i - 1])
            uniq[++k] = v[i];
}

void solve() {
    for (int i = 1; i <= n; i++) {
        for (int j = i, p = 1; j <= n; j++) {
            if (uniq[p] == v[j])
                p++;
            if (p == k + 1) {
                ans = min(ans, j - i + 1);
                break;
            }
        }
    }
}

int main() {
    read();
    sort(v + 1, v + n + 1);
    makeUniq();
    solve();
    if (ans == NMAX)
        fputs("-1", fout);
    else
        fprintf(fout, "%d\n", ans);
    STOP
}