Pagini recente » Cod sursa (job #1734019) | Cod sursa (job #1571955) | Cod sursa (job #1655604) | Cod sursa (job #944702) | Cod sursa (job #1491247)
#include <cstdio>
#include <iostream>
#include <set>
using namespace std;
int main() {
freopen("secv.in", "r", stdin);
freopen("secv.out", "w", stdout);
ios::sync_with_stdio(false);
cin.tie(0);
int dp[5005][5005], v[5005], n;
set<int> s;
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> v[i];
s.insert(v[i]);
}
set<int>::iterator it = s.begin();
for (int i = 1; i <= n; i++) {
if (v[i] == *it) {
dp[1][i] = 1;
}
}
int ant = *it, k = 2;
for (it++; it != s.end(); it++) {
for (int i = 1; i <= n; i++) {
if (v[i] == *it) {
for (int j = i - 1; j > 0; j--) {
if (v[j] == ant && dp[k - 1][j] > 0) {
dp[k][i] = i - j + dp[k - 1][j];
break;
}
}
}
}
ant = *it;
k++;
}
k--;
int ans = 5005;
for (int i = 1; i <= n; i++) {
if (dp[k][i] > 0 && dp[k][i] < ans) {
ans = dp[k][i];
}
}
cout << ((ans == 5005) ? -1 : ans);
return 0;
}