Pagini recente » Cod sursa (job #2253975) | Cod sursa (job #2094326) | Cod sursa (job #807269) | Cod sursa (job #620662) | Cod sursa (job #548224)
Cod sursa(job #548224)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream in ("secv.in");
ofstream out ("secv.out");
const int N = 1 << 13;
pair <int, int> x[N];
int v[N], n, val, poz[N], rez = 1 << 30;
void citire () {
in >> n;
for (int i = 1; i <= n; ++i) {
in >> x[i].first;
x[i].second = i;
}
}
void exe () {
sort (&x[1], &x[n + 1]);
val = 1;
v[x[1].second] = 1;
for (int i = 2; i <= n; ++i) {
if (x[i].first != x[i - 1]. first) {
++val;
}
v[x[i].second] = val;
}
for (int i = 1; i <= n; ++i) {
if (v[i] == 1) {
poz[1] = i;
} else {
poz[v[i]] = poz[v[i] - 1];
}
if (v[i] == val && poz[v[i]] != 0) {
rez = min (rez, i - poz[v[i]] + 1);
}
}
}
void afisare () {
if (rez == (1 << 30)) {
out << "-1\n";
return;
}
out << rez << '\n';
}
int main () {
citire ();
exe ();
afisare ();
return 0;
}