CF999A Mishka and Contest 题解

Content

能力值为 \(k\) 的小 M 参加一次考试,考试一共有 \(n\) 道题目,每道题目的难度为 \(a_i\)。小 M 会选择两头中的一道难度不超过他的能力值题目去做,每做完一道,这道题目会在题单中消失,序列长度减 \(1\)。求他按照这种方式最多能够做多少道题目。

数据范围:\(1\leqslant n,k,a_i\leqslant100\)。

Solution

从两头开始往中间遍历,哪一头的题目难度大于 \(k\),哪一头就结束扫描,得到最终能做的两头的位置 \(l,r\),答案就是 \(n-r+l+1\)。

Code

int n, k, a[200007], l, r, ans;

int main() {
	getint(n), getint(k); l = 0, r = n + 1;
	_for(i, 1, n)	getint(a[i]);
	while(1) {
		if(a[l + 1] > k || l == n) break;
		++l;
	}
	while(1) {
		if(a[r - 1] > k || r - 1 == l) break;
		--r;
	}
	writeint(ans = (n - (r - l - 1)));
	return 0;
}
上一篇:CF938B Run For Your Prize 题解


下一篇:【题解】[LOJ #2095 / 洛谷 P3172 / bzoj 3930]「CQOI2015」选数【莫比乌斯反演】