สมมติว่าเรามีอาร์เรย์ 2D ขนาด n x 4 มีนักเรียน n คน ID 0 ถึง n-1 แต่ละคนมีคะแนน 4 วิชา: อังกฤษ, ภูมิศาสตร์, คณิตศาสตร์, ประวัติศาสตร์ ตารางเรียงตามผลรวมคะแนนลดลง ถ้าผลรวมเท่ากัน เรียงตาม ID เพิ่มขึ้น ต้องหายศของนักเรียน ID 0
เช่น ถ้าอินพุตเป็นตาราง 4x4 ตามตัวอย่าง เอาต์พุตจะเป็น 2
ขั้นตอนการแก้ปัญหา
n := ขนาดของตาราง
r := 1
p := table[0,0] + table[0,1] + table[0,2] + table[0,3]
for i := 1 ถึง n-1:
if table[i,0]+table[i,1]+table[i,2]+table[i,3] > p:
เพิ่ม r ขึ้น 1
return r
ตัวอย่างโค้ด
#include <bits/stdc++.h>
using namespace std;
int solve(vector<vector<int>> table) {
int n = table.size();
int r = 1;
int p = table[0][0] + table[0][1] + table[0][2] + table[0][3];
for (int i = 1; i < n; i++) {
if (table[i][0] + table[i][1] + table[i][2] + table[i][3] > p)
r++;
}
return r;
}
int main() {
vector<vector<int>> table = {
{ 100, 98, 100, 100 },
{ 100, 100, 100, 100 },
{ 90, 99, 90, 100 },
{ 100, 98, 60, 99 }
};
cout << solve(table) << endl;
}
อินพุต
{ { 100, 98, 100, 100 }, { 100, 100, 100, 100 }, { 90, 99, 90, 100 }, { 100, 98, 60, 99 } }
เอาต์พุต
2