Codeforces Round #513 by Barcelona Bootcamp (rated, Div. 1 + Div. 2)

写得有点自闭啊。这题的中心思想应该是将左边和右边差距最小的两个合并。

 1 #include <iomanip>
 2 #include <iostream>
 3 #include <cstdio>
 4 #include <cmath>
 5 #include <cstring>
 6 #include <algorithm>
 7 #include <queue>
 8 #include <stack>
 9 #include <vector>
10 #include <map>
11 using namespace std;
12 const int nmax=100100;
13 int a[nmax],b[nmax],vis[nmax];
14 int main(int argc, char *argv[])
15 {
16     int n;
17     scanf("%d",&n);
18     for(int i=0;i<n;i++)
19         scanf("%d%d",&a[i],&b[i]);
20     sort(a,a+n);
21     sort(b,b+n);
22     long long sum=0;
23     for(int i=0;i<n;i++)
24     {
25         sum+=max(a[i],b[i]);
26     }
27     sum+=n;
28     printf("%I64d\n",sum);
29     return 0;
30 }

 

posted @ 2018-11-11 15:46  huluxin  阅读(148)  评论(0编辑  收藏  举报