Pagini recente » Cod sursa (job #522207) | Cod sursa (job #1081172) | Cod sursa (job #664193) | Cod sursa (job #1315932) | Cod sursa (job #1851181)
#include<fstream>
#include<algorithm>
using namespace std;
#define NMAX 5100
bool cmp(int* a, int* b){
if(*a > *b)
return 0;
return 1;
}
int main(){
ifstream fin("secv.in");
ofstream fout("secv.out");
int n, v[NMAX], *cv[NMAX];
fin >> n;
for(int i = 1; i <= n; i++){
fin >> v[i];
cv[i] = &v[i];
}
v[0] = -1;
cv[n + 1] = &v[1];
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;
}