🗂
全国統一プログラミング王決定戦予選 | C - Different Strokes
問題
解法
見た感じどのようにとればいいかわからないので
なんとなく合計が高いのを取るのがよさそうな感じはする。
ここで高橋くんが取得する
ここで
高橋君も青木君も最適な手をうつとすると、高橋君が(
コード
#include <bits/stdc++.h>
#include <atcoder/all>
using namespace std;
using namespace atcoder;
using ll = long long;
using ld = long double;
using uint = unsigned int;
using ull = unsigned long long;
const int MOD = 1e9 + 7;
int main() {
ll n;
cin >> n;
ll sumA = 0;
vector<int> c(n); // a, b, ab: a_i+b_i
for (int i = 0; i < n; i++) {
ll a, b;
cin >> a >> b;
c[i] = a + b;
sumA += a;
}
sort(c.rbegin(), c.rend());
for (int i = 1; i < n; i += 2) {
sumA -= c[i];
}
cout << sumA << endl;
}
参考
Discussion