Next Round

Next Round
Codeforces easy

عند إعطائك درجات \(N\) مشاركًا في مسابقةٍ ما، تكون مهمتك هي حساب عدد المشاركين الذين كانت درجاتهم أكبر من أو تساوي درجة المشارك الذي حصل على المركز \(K\)، بشرط أن تكون درجاتهم موجبة.

Caution

من الأخطاء الشائعة نسيان استبعاد المشاركين الذين حصلوا على درجة \(0\)، لذا يجب اتباع نص المسألة بدقة، وأعد قراءتها إذا لم تتمكن من إيجاد الخطأ في فكرتك.

Tip

يُعطى في نص المسألة أن \(A_{i-1} \ge A_i\)، وهي معلومة أساسية سنعتمد عليها في الحل.

Solution

المشارك الذي يحتل المركز \(K\) يوجد في الفهرس \(K - 1\) من المصفوفة. لذا يكفي أن نكرّر على المصفوفة ونحسب عدد الفهارس التي قيمتها أكبر من أو تساوي تلك القيمة.

#include<iostream>
using namespace std;

int main () {
    int n, k;
    cin >> n >> k;

    int a[n], ans = 0;

    for (int i = 0 ; i < n ; i++) cin >> a[i];

    for (int i = 0 ; i < n ; i++) {
        if (a[i] >= a[k - 1] && a[i] > 0) ans++;
    }

    cout << ans;
}
Caution

يجب قراءة المصفوفة كاملة قبل المعالجة، لأنه إذا تحقق الشرط i < k - 1 فلن تكون قيمة a[k - 1] قد قُرئت بعد.