Pagini recente » Cod sursa (job #526748) | Cod sursa (job #703614) | Cod sursa (job #2561246) | Cod sursa (job #2524064) | Cod sursa (job #2018892)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("secv.in");
ofstream g("secv.out");
int n, i, j, m, k, minim = 10000;
int a[5005], b[5005], c[5005], d[5005];
int main() {
f >> n;
for (i = 1; i <= n; i++)
f >> a[i], b[i] = a[i];
sort(b+1, b+n+1);
for (i = 1; i <= n; i++)
if (b[i] != b[i-1])
c[++m] = b[i];
for (i = 1; i <= n; i++) {
int st = 1, dr = m, mij;
while (st <= dr) {
mij = (st+dr)/2;
if (a[i] == c[mij]) {
d[i] = mij;
break;
}
if (a[i] > c[mij])
st = mij+1;
else dr = mij-1;
}
}
/*for (i = 1; i <= n; i++)
g << d[i] << ' ';
g << '\n';*/
for (i = 1; i <= n; i++)
if (d[i] == 1) {
k = 2;
j = i+1;
for (;k <= m && j <= n; j++)
if (d[j] == k)
k++;
//g << k << ' ' << j << ' ' << i << '\n';
if (j-i < minim && k > m) minim = j-i;
}
if (minim != 10000)
g << minim;
else g << -1;
}