测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A28391. 平均分配

填空题 困难

题目描述

平均分配

题目描述

小A有2n件物品,小B和小C想从小A手上买走这些物品。对于第i件物品,小B会以bi的价格购买,而小C会以Ci的价格购买。为了平均分配这2n件物品,小A决定小B和小C各自只能买走恰好n件物品。你能帮小A求出他卖出这2n件物品所能获得的最大收入吗?

输入格式

第一行,一个正整数n。

第二行,2n个整数b1,b2,...,b2n 。

第三行,2n个整数c1,c2,...,c2n 。

输出格式

一行,一个整数,表示答案。

样例

输入样例 1

3
1 3 5 6 8 10
2 4 6 7 9 11

输出样例 1

36

输入样例 2

2
6 7 9 9
1 2 10 12

输出样例 2

35

数据范围

对于20% 的测试点,保证1≤n≤8 。

对于另外20% 的测试点,保证0≤bi≤1,0≤ci≤1。

对于所有测试点,保证1≤n≤105 ,0≤bi≤109,0≤ci≤109 。

参考答案

#include <bits/stdc++.h> using namespace std; const int N = 2e5 + 5; int n; long long b[N], c[N], d[N]; long long ans; int main() { scanf("%d", &n); assert(1 <= n && n <= 1e5); for (int i = 1; i <= 2 * n; i++) scanf("%lld", &b[i]), assert(0 <= b[i] && b[i] <= 1e9); for (int i = 1; i <= 2 * n; i++) scanf("%lld", &c[i]), assert(0 <= c[i] && c[i] <= 1e9); for (int i = 1; i <= 2 * n; i++) { ans += b[i]; d[i] = c[i] - b[i]; } sort(d + 1, d + 2 * n + 1); for (int i = n + 1; i <= 2 * n; i++) ans += d[i]; printf("%lld\n", ans); return 0; }
上一题 下一题