Pagini recente » Cod sursa (job #645172) | Borderou de evaluare (job #1144897) | Cod sursa (job #550860) | Cod sursa (job #2349695) | Cod sursa (job #548194)
Cod sursa(job #548194)
#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, MAX;
void citire () {
in >> n;
for (int i = 1; i <= n; ++i) {
in >> x[i].first;
MAX = max (MAX, 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] == MAX) {
rez = min (rez, i - poz[v[i]] + 1);
}
}
}
}
void afisare () {
out << rez << '\n';
}
int main () {
citire ();
exe ();
afisare ();
return 0;
}