if (k>n) k=n;
只要加上这一句,你就不会超时了。这句话的意思是,如果有一个人能打败其他所有人,那这个人打多少场都能赢。
#include
int max(int a, int b) {
return a>b?a:b;
}
int min(int a, int b) {
return a}
int main() {
int n;
long long k;
scanf("%d %I64d", &n, &k);
if (k>n) k=n;
int a[1111];
int i;
for (i=0; iint count=-1, ans=-1;
for (i=0; ia[n++]=min(a[i], a[i+1]);//失败者去最后
a[i+1]=max(a[i], a[i+1]);//胜利者进入下一轮
if (ans==a[i+1]) count++;//连续胜利
else { //新人获胜
ans=a[i+1];
count=1;
}
if (count==k) break; //获胜k次结束
}
printf("%d\n", ans);
return 0;
}