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;
}