6 個數字。爺爺取最大的兩個,妹子取剩下的三個。比較兩者之和,大者獲勝。輸出贏家。
排序後 a[0] ≤ a[1] ≤ ... ≤ a[5]。
爺爺最優策略必取 a[5] + a[4](最大兩個)。
妹子拿剩下三個中最大的 a[3] + a[2] + a[1](注意 a[0] 最小被捨棄)。
直接比較兩和即可。
#include <cstdio>
#include <algorithm>
using namespace std;
int main() {
int T, a[6];
scanf("%d", &T);
while (T--) {
for (int i = 0; i < 6; ++i) scanf("%d", &a[i]);
sort(a, a+6);
int grandpa = a[5] + a[4];
int girl = a[3] + a[2] + a[1];
if (grandpa > girl)
puts("Grandpa Shawn is the Winner!");
else
puts("What a sad story!");
}
return 0;
}
O(1) 排序 6 個數,極快。純邏輯題,無陷阱。