吐槽下,提交的时候显示编译失败,过了好久又重新提交了竟然A了,中间检查代码耽误了好长时间
第一道打个表
arr 1 3 2 4
brr 1 3 3 4
arr是一群人一开始的实力,brr是当前这个人最多能赢多少局,比如3出现了2次,代表能赢2次
如果数据是
4 2
1 3 2 4
那么
1 3 2 4 3 赢了1次
3 2 4 1 3赢了2次
如果数据是
4 6
1 3 2 4
1 3 2 4 3 赢了1次
3 2 4 1 3赢了2次
3 4 1 2 4赢了1次
4 1 2 3
...
这个时候发现,4会一直赢下去
根据 brr 表可知 4赢了1次目前,那么还需要5场...
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 100005;
int arr[maxn];
int brr[maxn];
int main()
{
int n ,c;
int cnt ; //赢的次数
while(cin>>n>>c){
for(int i = 0;i<n;++i){
cin>>arr[i];
}
int maxnum = arr[0];
for(int i = 0;i<n;++i){
if(maxnum>arr[i]){
brr[i] = maxnum;
}else{
brr[i] = arr[i];
maxnum = arr[i];
}
}
int nownum = arr[0];
cnt = 0;
int i;
for(i = 1;i<n;++i){
if(nownum == brr[i]){
cnt++;
if(cnt == c){
break;
}
} else{
nownum = brr[i];
cnt = 1;
}
}
if(i<n){
cout<<i<<endl;
} else {
cout<<n+c-cnt-1<<endl;
}
}
return 0;
}