Pagini recente » Cod sursa (job #1926244) | Cod sursa (job #1575444) | Cod sursa (job #1525580) | Cod sursa (job #2492587) | Cod sursa (job #2912928)
#include <bits/stdc++.h>
using namespace std;
ifstream fin( "secv.in" );
ofstream fout( "secv.out" );
const int MAXN = 5005;
int v[MAXN], w[MAXN], ind[MAXN];
struct cmp {
bool operator () ( const int &a, const int &b ) {
return v[a] < v[b];
}
};
map<int, int> mp;
int nxt[MAXN];
int main() {
int n;
fin >> n;
for ( int i = 1; i <= n; ++i ) {
fin >> v[i];
w[i] = v[i];
ind[i] = i;
}
sort( ind + 1, ind + n + 1, cmp() );
int val = 1;
v[ind[1]] = val;
for ( int i = 2; i <= n; ++i ) {
val += (w[ind[i]] != w[ind[i-1]]);
v[ind[i]] = val;
}
for ( int i = n; i >= 1; --i ) {
if ( mp.count(v[i] + 1) ) {
nxt[i] = mp[v[i] + 1];
} else {
nxt[i] = -1;
}
mp[v[i]] = i;
}
int res = 1e9;
for ( int i = 1; i <= n; ++i ) {
if ( v[i] != 1 ) continue;
int pos = nxt[i], prv = i;
while ( pos != -1 ) {
prv = pos;
pos = nxt[pos];
}
if ( v[prv] == val ) {
res = min(res, prv - i + 1);
}
}
fout << res;
fin.close();
fout.close();
return 0;
}