สมมติว่าเรามีอาร์เรย์ A ขนาด n มีตัวเลข n ตัวบนกระดาน อมลและบิมลเล่นเกมสลับรอบ ในแต่ละรอบ เลือกตัวเลขหนึ่งลบออก อมลเล่นก่อน อมลต้องการลดตัวเลขสุดท้ายที่เหลือให้น้อยที่สุด บิมลต้องการเพิ่มมากที่สุด หาตัวเลขที่เหลือสุดท้าย
เช่น ถ้าอินพุตคือ A = [2, 1, 3] เอาต์พุตจะเป็น 2 เพราะอมลลบ 3 บิมลลบ 1 เหลือ 2
ขั้นตอนการแก้ปัญหา
n := ขนาดของ A เรียงลำดับ A return A[floor((n - 1)/2)]
ตัวอย่างโค้ด
#include <bits/stdc++.h>
using namespace std;
int solve(vector<int> A) {
int n = A.size();
sort(A.begin(), A.end());
return A[(n - 1) / 2];
}
int main() {
vector<int> A = { 2, 1, 3 };
cout << solve(A) << endl;
}
อินพุต
{ 2, 1, 3 }
เอาต์พุต
2