สมมติว่าเรามีอาร์เรย์ A ขนาด n ในการแข่งขันเขียนโค้ด มีนักเรียน n คน ก่อนเริ่มทุกคนมี rating บวก A[i] คือ rating คนที่ i หลังจบการแข่งขัน ทุกคนได้ตำแหน่งจำนวนเต็มบวก คาดว่าจะจัดอันดับตาม rating ถ้า A มี rating ต่ำกว่า B อย่างเคร่งครัด A จะได้ตำแหน่งมากกว่า B อย่างเคร่งครัด หาตำแหน่งท้ายการแข่งขัน
เช่น ถ้าอินพุตคือ A = [3, 5, 3, 4, 5] เอาต์พุตจะเป็น [4, 1, 4, 3, 1] เพราะคนที่ 2 และ 5 อันดับ 1 คนที่ 4 อันดับ 3 คนที่ 1 และ 3 อันดับ 4
ขั้นตอนการแก้ปัญหา
n := ขนาดของ A
for i := 0 ถึง n-1:
d := 1
for j := 0 ถึง n-1:
if A[j] > A[i]: เพิ่ม d ขึ้น 1
cout << d << ", "
ตัวอย่างโค้ด
#include <bits/stdc++.h>
using namespace std;
void solve(vector<int> A) {
int n = A.size();
for (int i = 0; i < n; i++) {
int d = 1;
for (int j = 0; j < n; j++) {
if (A[j] > A[i]) d++;
}
cout << d << ", ";
}
}
int main() {
vector<int> A = { 3, 5, 3, 4, 5 };
solve(A);
}
อินพุต
{ 3, 5, 3, 4, 5 }
เอาต์พุต
4, 1, 4, 3, 1,