Pagini recente » Cod sursa (job #832831) | Cod sursa (job #478825) | Cod sursa (job #2016432) | Cod sursa (job #1713064) | Cod sursa (job #2018885)
#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])
st = mij+1;
else dr = mij-1;
}
d[i] = st;
}
for (i = 1; i <= n; i++)
if (d[i] == 1) {
k = 1;
j = i+1;
for (;k != m && j <= n; j++)
if (d[j] == k+1)
k++;
if (j-i < minim && k == m) minim = j-i;
}
if (minim != 10000)
g << minim;
else g << -1;
}