链接:http://codeforces.com/problemset/problem/1117/A
来源:Codeforces
想到了思路,却败给了实现方法。此题大意就是,我们找到一个利用上述公式可以计算出一个值,我们需要一个找到最大的值,输出构成这个值的区间的最大长度.我们当长度为1的时候,一个值就是最大的,如果在增加一个数这个值只会不变或者变小,所以我们只需要找到这个数组中最大的数连续出现了几次。
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
//typedef long long LL;
const int Max_n=100005;
int a[Max_n];
int main(){
int n;
scanf("%d",&n);
int mmax=0;
for (int i=0;i<n;++i){
scanf("%d",&a[i]);
if(a[i]>mmax) mmax=a[i];
}
int cnt=0,res=0;
for(int i=0;i<n;++i){
if(a[i]==mmax){
cnt++;
if(res<cnt) res=cnt;
}
else cnt=0;
}
printf("%d\n",res);
return 0;
}