Pagini recente » Cod sursa (job #2809313) | Cod sursa (job #80103) | Cod sursa (job #759057) | Cod sursa (job #3268815) | Cod sursa (job #1851200)
#include<fstream>
#include<algorithm>
using namespace std;
#define NMAX 5100
bool cmp(int* a, int* b){
if(*a > *b)
return 0;
return 1;
}
int n, v[NMAX], *cv[NMAX];
int main(){
ifstream fin("secv.in");
ofstream fout("secv.out");
fin >> n;
for(int i = 1; i< NMAX; i++)
cv[i] = &v[0];
for(int i = 1; i <= n; i++){
fin >> v[i];
cv[i] = &v[i];
}
v[0] = -1;
stable_sort(cv + 1, cv + n + 1, cmp);
int last = *cv[1], inc = 1;
*cv[1] = inc;
for(int i = 2; i <= n; i++){
if(*cv[i] != last){
last = *cv[i];
inc ++;
}
*cv[i] = inc;
}
int type[NMAX], dad[NMAX], best = NMAX;
for(int i = 1; i <= inc; i++){
type[i] = 0;
dad[i] = 0;
}
for(int i = 1; i <= n; i++){
type[v[i]] = i;
dad[i] = type[v[i] - 1];
if(dad[dad[i]] != 0)
dad[i] = dad[dad[i]];
if(v[i] == inc && i - dad[i] + 1 < best && v[dad[i]] == 1)
best = i - dad[i] + 1;
}
if(best == NMAX)
best = -1;
if(inc == 1)
best = 1;
fout << best;
return 0;
}