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 }