Pagini recente » Cod sursa (job #3342618) | Cod sursa (job #3321429) | Cod sursa (job #1846987) | Cod sursa (job #3348605) | Cod sursa (job #3323037)
#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;
}