我正在 Codeforces 上完成问题 158A,我在测试编号 6 上遇到错误。我奇怪地在总数中添加了另一个数字,即使它没有发生在任何其他测试问题上。这是代码:
#include <iostream>
using namespace std;
int main(){
int n,k, total = 0, x;
cin >> n >> k;
int arr[n];
for(int i=0; i<n; i++){
cin >> x;
arr[i] = x;
if(x == 0){
total = total;
}
else if(i <= k){
total++;
}
else if (i>k && arr[i] == arr[k-1] ){
total++;
}
}
cout << total << endl;
return 0;
}
这里是问题说明和测试示例。
问题说明:
“得分等于或大于第 k 名的参赛者将晋级下一轮,只要参赛者获得正分……”——比赛规则摘录。
一共有n位参赛者参加了比赛(n⟩≥⟩k),你已经知道他们的分数了。计算有多少参与者将晋级下一轮。
输入 输入的第一行包含两个整数 n 和 k (1 ≤ k ≤ n ≤ 50),由一个空格分隔。
第二行包含 n 个以空格分隔的整数 a1, a2, ...,⟩an (0 ≤ ai⟩≤⟩100),其中 ai 是获得第 i 名的参与者所获得的分数。给定的序列是非递增的(即,对于从 1 到 n⟩-⟩1 的所有 i,满足以下条件:ai ≥⟩ai⟩+⟩1)。
输出 输出晋级下一轮的参与者人数。
这里是失败的测试代码:
17 14
16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
答案应该是 14 但我得到 15.
这里是有效的测试代码:
8 5
10 9 8 7 7 7 5 5
我已经尝试更改 for 循环的一部分,它修复了这个测试,但使所有其他测试都失败了,这意味着只有问题 6 错误的测试更好。