Cod sursa(job #2657856)

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

void read() {
    fin >> n;
    for (int i = 1; i <= n; i++) {
        fin >> v[i];
        uniq[i] = v[i];
    }
}

void makeUniq() {
    k = 1;
    for (int i = 2; i <= n; i++)
        if (uniq[i] != uniq[i - 1])
            uniq[++k] = uniq[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(uniq + 1, uniq + n + 1);
    makeUniq();
    solve();
    fout << ((ans == NMAX) ? -1 : ans) << endl;
    STOP
}