Cod sursa(job #3323037)

Utilizator BuzdiBuzdugan Rares Andrei Buzdi Data 16 noiembrie 2025 18:24:22
Problema Secv Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <bits/stdc++.h>

#define ll long long
#define cin fin
#define cout fout

using namespace std;

ifstream fin("secv.in");
ofstream fout("secv.out");

const int NMAX = 5000;
const int INF = 2e9;

int n, lmax, answer;
int a[NMAX + 1];
pair<int, int> dp[NMAX + 1];
set<int> s;

int main() {
    cin >> n;
    for(int i = 1; i <= n; i++) {
        cin >> a[i];
        s.insert(a[i]);
    }

    for(int i = 1; i <= n; i++) {
        dp[i] = {1, i};
        for(int j = 1; j < i; j++) {
            if(a[j] < a[i]) {
                dp[i] = max(dp[i], {dp[j].first + 1, dp[j].second});
            }
        }
    }

    for(int i = 1; i <= n; i++) {
        lmax = max(lmax, dp[i].first);
    }

    if(lmax != s.size()) {
        cout << -1 << '\n';
        return 0;
    }

    answer = INF;
    for(int i = 1; i <= n; i++) {
        if(dp[i].first == lmax) {
            answer = min(answer, i - dp[i].second + 1);
        }
    }
    cout << answer << '\n';
    return 0;
}