CF158A Next Round 题解
Content
有 \(n\) 个人参加比赛,第 \(i\) 名在第一轮的分数是 \(a_i\)(保证 \(a_i\geqslant a_{i+1}\))已知下一轮预计能进 \(k\) 人,当然如果有并列的第 \(k\) 名,则他们都能够进入下一轮。但是,没有得分的人尽管是前 \(k\) 名,都不能够进入下一轮。求能够进下一轮的人数。
数据范围:\(1\leqslant k\leqslant n\leqslant 50,0\leqslant a_i\leqslant100\)。
Solution
我们一个一个读入并判断,当人数已经达到 \(k\) 的时候,我们就开始判断是否与前面那一名的分数相等,一不相等我们就直接退出去输出结果。
当然要特判分数是否大于 \(0\)。
Code
#include <cstdio>
using namespace std;
int n, k, pre, ans;
int main() {
scanf("%d%d", &n, &k);
for(int i = 1; i <= n; ++i) {
int x;
scanf("%d", &x);
// printf("%d %d\n", pre, x);
if(!x || (x != pre && ans >= k)) break;
ans++;
pre = x;
}
printf("%d", ans);
}