Pagini recente » Cod sursa (job #3215895) | Cod sursa (job #2626819) | Cod sursa (job #1072038) | Cod sursa (job #1636672) | Cod sursa (job #2467286)
#include <iostream>
#include <fstream>
#include <algorithm>
#define nmx 5005
//10:07
using namespace std;
ifstream fin("secv.in");
ofstream fout("secv.out");
int n, i, j, nr, p, stp, lsr, sestp, rez;
int v[nmx], sr[nmx], id[nmx];
int main () {
fin >> n;
for (i = 1; i <= n; i++) {
fin >> v[i];
sr[i] = v[i];
}
sort(sr + 1, sr + n + 1);
j = 1;
for (i = 2; i <= n; i++) {
if (sr[i] != sr[i - 1]) {
sr[++j] = sr[i];
}
}
lsr = j;
for (stp = 1; stp <= lsr; stp <<= 1);
sestp = (stp >> 1);
for (i = 1; i <= n; i++) {
for (stp = sestp, p = 0; stp > 0; stp >>= 1) {
if (p + stp < lsr && sr[p + stp] < v[i])
p += stp;
}
v[i] = p + 1;
}
rez = n + 1;
for (i = 1; i <= n; i++) {
id[0] = i;
if (id[v[i] - 1]) {
id[v[i]] = id[v[i] - 1];
if (v[i] == lsr)
rez = min( rez, i - id[lsr] + 1);
}
}
if (rez == n + 1) rez = -1;
fout << rez << "\n";
}