时间限制:10000ms
单点时限:1000ms
内存限制:256MB
描述
H公司在北京和上海两个城市各有一间办公室。该公司最近新招募了2N名员工,小Hi负责把这2N名员工分配到北京和上海各N名。
于是小Hi调查了新员工对于北京和上海的意愿,我们用Bi和Si表示。Bi代表如果分配第i名员工去北京,他的满意指数;Si代表如果分配去上海,他的满意指数。
小Hi想知道如何分配才能使2N名员工的满意指数之和最高。
输入
第一行包含一个整数N。
以下2N行每行包含两个整数Bi和Si。
1 ≤ N ≤ 1000
0 ≤ Bi, Si ≤ 100000
输出
一个整数代表最高可能的满意指数之和。
- 样例输入
-
2 100 50 80 80 50 100 10 30
- 样例输出
-
310
1 #include <bits/stdc++.h> 2 3 using namespace std; 4 5 const int N = 2200; 6 7 struct Node{ 8 int b, s; 9 }node[N]; 10 11 bool cmp(const Node a, const Node b){ 12 return (a.b-a.s) > (b.b-b.s); 13 } 14 15 int main() 16 { 17 int n; 18 cin>>n; 19 for(int i = 0; i < 2*n; i++){ 20 cin>>node[i].b>>node[i].s; 21 } 22 sort(node, node+2*n, cmp); 23 int ans = 0; 24 for(int i = 0; i < 2*n; i++){ 25 if(i < n)ans += node[i].b; 26 else ans += node[i].s; 27 } 28 cout<<ans<<endl; 29 30 return 0; 31 }