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);
}
posted @ 2021-12-21 20:53  Eason_AC  阅读(40)  评论(0)    收藏  举报