Pagini recente » Cod sursa (job #2572591) | Cod sursa (job #2324831) | Cod sursa (job #1239165) | Cod sursa (job #2185259) | Cod sursa (job #2018896)
#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);
b[0] = -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++)
if (d[i] == 1) {
for (j = i+1, k = 2; k <= m && j <= n; j++)
if (d[j] == k)
k++;
if (j-i < minim && k > m) minim = j-i;
}
if (minim != 10000)
g << minim;
else g << -1;
}