158A - Codeforces 问题集计数错误 [关闭]

问题描述 投票:0回答:0

我正在 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 错误的测试更好。

c++ offset
© www.soinside.com 2019 - 2024. All rights reserved.