โจทย์: มีถ้วยเป้า 1 ใบ และถ้วยน้ำ n ใบ ผู้เล่นสลับเทน้ำ ถ้าเกินความจุ s จะแพ้ หากถ้วยเต็มแล้ว ผู้เล่นถัดไปไม่เล่น หาตรวจสอบว่าทุกคนชนะได้หรือไม่ (ไม่เกินความจุ)
Input: A=[3,1,3], s=4 → Output: True (คนที่ 1,2 เทจนเต็ม คนที่ 3 ไม่เล่น)
ขั้นตอนแก้
sort A k := sum of first n-1 elements if k > s: return false else return true
ตัวอย่างโค้ด
#include <bits/stdc++.h>
using namespace std;
bool solve(vector<int> A, int s) {
int k = 0, n = A.size();
sort(A.begin(), A.end());
for (int i = 0; i < n-1; i++) k += A[i];
return k <= s;
}
int main() {
vector<int> A = {3,1,3};
int s = 4;
cout << solve(A,s) << endl;
}Input
{3,1,3}, 4Output
1