Pagini recente » Cod sursa (job #2057766) | Cod sursa (job #1301469) | Cod sursa (job #911544) | Cod sursa (job #1536038) | Cod sursa (job #990464)
Cod sursa(job #990464)
#include <algorithm>
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("secv.in");
ofstream fout("secv.out");
const int MAX_N = 5010;
const int oo = 0x3f3f3f3f;
int n, m, mx;
int sol = oo;
int a[MAX_N], v[MAX_N];
int last[MAX_N];
inline int binsrc(int wanted) {
int i = 0, cnt = 1 << 12;
for (; cnt; cnt >>= 1)
if (i + cnt <= m && a[i + cnt] <= wanted)
i += cnt;
return i;
}
int main() {
fin >> n;
for (int i = 1; i <= n; ++i)
fin >> a[i], v[i] = a[i];
sort(a + 1, a + n + 1);
for (int i = 1; i <= n; ) {
int j = i;
while (a[i] == a[j])
++j;
--j;
a[++m] = a[j];
i = ++j;
}
for (int i = 1; i <= n; ++i)
v[i] = binsrc(v[i]), mx = max(mx, v[i]);
for (int i = 1; i <= n; ++i) {
if (v[i] == 1)
last[1] = i;
else {
if (last[v[i] - 1]) {
last[v[i]] = last[v[i] - 1];
}
}
if (v[i] == mx && last[v[i]])
sol = min(sol, i - last[v[i]] + 1);
}
fout << sol << '\n';
fin.close();
fout.close();
}