Pagini recente » Cod sursa (job #1368636) | Cod sursa (job #1926017) | Cod sursa (job #3246786) | Cod sursa (job #371778) | Cod sursa (job #1226507)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f ("secv.in");
ofstream g ("secv.out");
const int NMAX = 5000 + 1;
int n;
int a[NMAX], sorted[NMAX], dif[NMAX];
void citeste() {
f >> n;
for (int i = 1; i <= n; i++) f >> a[i], sorted[i] = a[i];
}
void rezolva() {
int nrdif = 1;
dif[nrdif] = sorted[1];
for (int i = 2; i <= n; i++)
if (sorted[i] != sorted[i - 1]) dif[++nrdif] = sorted[i];
int lim = n - nrdif + 1, sol = NMAX;
for (int i = 1; i <= lim; i++) {
if (a[i] == dif[1]) {
int j, k = 1;
for (j = i; j <= n && k <= nrdif; j++)
if (a[j] == dif[k]) k++;
if (k - 1 == nrdif && j - i < sol) sol = j - i;
}
}
if (sol == NMAX) g << "-1\n";
else g << sol << '\n';
}
int main () {
citeste();
sort(sorted + 1, sorted + n + 1);
rezolva();
return 0;
}