Pagini recente » Cod sursa (job #1746057) | Cod sursa (job #2096443) | Cod sursa (job #2682889) | Cod sursa (job #2764943) | Cod sursa (job #2163044)
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
#define DIM 5005
int V[DIM], x[DIM], df[DIM];
//andrei1998 (C)
class InputReader {
public:
InputReader(const char *input_file) {
in = fopen(input_file, "r");
cursor = 0;
fread(buffer, 1, SZ, in);
}
InputReader& operator>>(int &nr) {
while (!isdigit(buffer[cursor]))
advance();
nr = 0;
while (isdigit(buffer[cursor])) {
nr *= 10;
nr += buffer[cursor] - '0';
advance();
}
return (*this);
}
private:
static const int SZ = (1 << 20);
FILE *in;
int cursor;
char buffer[SZ + 5];
void advance() {
++ cursor;
if (cursor == SZ) {
cursor = 0;
fread(buffer, 1, SZ, in);
}
}
};
int main() {
InputReader cin("secv.in");
freopen("secv.out","w",stdout);
int N;
cin >> N;
for(int i = 1; i <= N; ++i) {
cin >> V[i];
x[i] = V[i];
}
sort(x + 1, x + 1 + N);
x[0] = -1;
for(int i = 1; i <= N; ++i) {
if(x[i] > x[i - 1]) {
df[++df[0]] = x[i];
}
}
int ans = 1e9;
for(int i = 1; i <= N; ++i) {
if(df[1] == V[i]) {
int pos = 2, j = i + 1;
for(; pos <= df[0] && j <= N; ++j) {
if(V[j] == df[pos]) {
++pos;
}
}
if(pos > df[0]) {
ans = min(ans, j - i);
}
}
}
if(ans == 1e9) {
cout << -1 << '\n';
return 0;
}
cout << ans << '\n';
return 0;
}