Files
python/GESP/Level5/GESP202503/T1.cpp
HuangHai a6ed9954d6 'commit'
2025-09-24 15:40:59 +08:00

36 lines
1008 B
C++

#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
typedef long long LL;
int n;
LL b[N], c[N], d[N];
/*
关键点解释:
差价数组 d 的排序是升序排列,所以后 n 个元素是最大的
通过选择最大的 n 个差价,确保我们最大化改卖给小 C 带来的收益提升
最终总收益 = 全选小 B 的收益 + 最优的 n 个改卖带来的收益提升
*/
LL ans;
int main() {
// freopen("T1.in", "r", stdin);
cin >> n;
for (int i = 1; i <= 2 * n; i++)
cin >> b[i];
for (int i = 1; i <= 2 * n; i++)
cin >> c[i];
// 初始化为全选小 B 的总收入
for (int i = 1; i <= 2 * n; i++)
ans += b[i];
// 计算每个物品改卖给小 C 的差价
for (int i = 1; i <= 2 * n; i++)
d[i] = c[i] - b[i];
// 排序后取最大的 n 个差价(排序后后半段是最大的)
sort(d + 1, d + 2 * n + 1);
for (int i = n + 1; i <= 2 * n; i++)
ans += d[i];
cout << ans << endl;
return 0;
}