题目注意两个地方:一个是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;
}
本文提供了一个使用C++解决特定问题的编程示例。该示例关注如何处理大规模数值和数组排序,通过实例展示了如何读取输入并根据不同条件输出结果。
1020

被折叠的 条评论
为什么被折叠?



