Pagini recente » Cod sursa (job #1315727) | Cod sursa (job #2701571) | Cod sursa (job #2910820) | Cod sursa (job #1314021) | Cod sursa (job #1089400)
#include <stdio.h>
#include<algorithm>
const int nmax = 5300;
using namespace std;
int a[nmax],n,b[nmax][nmax],c[nmax][nmax],d[nmax],u[nmax],sol=-1,l[nmax],max1=-1;;
main(){
freopen("secv.in","r",stdin);
freopen("secv.out","w",stdout);
scanf("%d ",&n);
int min = 2000000000;
for(int i=1;i<=n;i++){
scanf("%d ",&a[i]);
if(min>a[i])min=a[i];
}
int k = 1;
for(int i=1;i<=n;i++){
if(min==a[i]){
d[k]=i; k++;
}
}
for(int i=1;i<k;i++){
b[i][d[i]]=1; int h=d[i]+1; int j = d[i]; u[i]=1;
while(h<=n){
if(a[h]>a[j]){
b[i][h]=b[i][j]+1;
bool ok = true; int z=h+1;
while(ok && z<=n){
if(a[z]<a[h] && a[z]>a[j]){
ok = false; //printf(" %d %s",z,"\n");
}else
z++;
}
if(ok){
j=h ; h++;
}
else {
b[i][z]=b[i][j]+1; j=z; h = z+1;
}
u[i]++;l[i]=h;
if(max1<u[i])max1=u[i];
}else h++;
}
}
for(int i=1;i<k;i++){
//for(int j=1;j<=n;j++) printf("%d ",b[i][j]);
// printf(" %d %d %d %s",u[i],l[i],d[i],"\n");
if(sol<(l[i]-d[i]) && u[i]==max1 && max1 >1)sol=l[i]-d[i];
}
printf("%d",sol);
}