题目注意两个地方:一个是k的取值范围太大,需要longlong保存,一个是除了第一位的胜场是从0计数,剩下n-1位的胜场都是从1计数。
/*
* 20171028
*/
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <cstdlib>
using namespace std;
int p[1005];
int main()
{
memset(p,0,sizeof(p));
int n;
long long k;
scanf("%d%I64d",&n,&k);
int maxnum = 0;
for(int i=0;i<n;i++)
{
scanf("%d",&p[i]);
maxnum = max(maxnum,p[i]);
}
if(k>=n-1) printf("%d\n",maxnum);
else
{
int i = 0;
int j = 0;
int cnt = 0;
while(i<n)
{
j = 1;
while(cnt<k)
{
if(p[i+j]>p[i])
{
i = i+j;
cnt = 1;
if(cnt==k)
{
printf("%d\n",p[i]);
i = n+1;
break;
}
break;
}else
{
cnt++;
j++;
if(cnt==k)
{
printf("%d\n",p[i]);
i = n+1;
break;
}
}
}
}
}
return 0;
}