#include 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; }