Pagini recente » Cod sursa (job #872511) | Cod sursa (job #551704) | Cod sursa (job #3326703) | Cod sursa (job #2789221) | Cod sursa (job #865795)
Cod sursa(job #865795)
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream cin("secv.in");
ofstream cout("secv.out");
const int NMAX = 5002;
int N;
int v[NMAX];
int lst[NMAX];
vector<int> u;
int main()
{
cin>>N;
u.resize(N);
for(int i = 1;i <= N;i++) {
cin>>v[i];
u[i - 1] = v[i];
}
sort(u.begin(),u.end());
vector<int>::iterator it = unique(u.begin(),u.end());
u.erase(it,u.end());
int P = (int)u.size();
int ans = N + 1;
for(int i = 1;i <= N;i++) {
v[i] = lower_bound(u.begin(),u.end(),v[i]) - u.begin();
if(v[i] == 0) {
lst[v[i]] = i;
} else {
if(lst[v[i] - 1] != 0) {
lst[v[i]] = lst[v[i] - 1];
}
}
if(v[i] == P - 1 && lst[P - 1]) {
ans = min(ans,i - lst[P - 1] + 1);
}
}
cout<<(ans == N + 1 ? -1 : ans);
return 0;
}