[rt](https://www.luogu.com.cn/problem/P5963)
------------
## part1
### 题意简述
给你 $n$ 张纸牌,每张纸牌有两个面。
将 $n$ 张纸牌按一定顺序填入框中。填入卡牌时,不一定需要按照卡牌和框的顺序进行填写(即可以进行位置的调换)。求在一定顺序下式子最小的结果。
### 思路
因为格式是按减和加来回变化的,所以要加的数有 $n/2$ 个,减的也有 $n/2$ 个。因为要结果最小,所以尽量使 $sum_i$ 较大的 $A_i$ 所以得到贪心策略:取卡牌 $sum$ 值大的一半的 $A_i$,放在减号框内,$sum$ 值小的一半的 $B_i$ 放在加号框内,此时的结果最小。
### so
定义一个 $sum_i$ 来存放 $x_i+y_i$ 的值。按 $sum_i$ 排序。选前 $n/2$ 个放入加号框,后 $n/2$ 放入减号框。
## part2
最后直接上代码。
### code
```
#include<bits/stdc++.h>
#define int long long
int n,ans=0;struct node{int a,b;}c[50000009];
int cmp(node x,node y){if((x.a+x.b)<(y.a+y.b)){return 1;}return 0;}
using namespace std;
signed main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>c[i].a>>c[i].b;
sort(c+1,c+1+n,cmp);
for(int i=1;i<=n/2;i++) ans+=min(c[i].a,c[i].b);
for(int i=n/2+1;i<=n;i++) ans-=max(c[i].a,c[i].b);
cout<<ans;
return 0;
}
```
## End
另附上一则温馨提示 $n\leq 5\cdot 10^5$ 且 $|A_i|,|B_i|\leq 10^7$。