Next Round
Next Round
عند إعطائك درجات \(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] قد قُرئت بعد.