1 class Solution
2 {
3 public:
4 vector<int> fairCandySwap(vector<int>& A, vector<int>& B)
5 {
6 vector<int> result;
7 int total_A = 0,total_B = 0;
8 sort(A.begin(),A.end());
9 sort(B.begin(),B.end());
10 for(auto d:A)
11 total_A += d;
12 for(auto d:B)
13 total_B += d;
14
15 int diff = abs(total_A-total_B)/2;
16 int flag = total_A > total_B ? 1:0;//1 alic 多
17
18 if(flag)
19 {
20 for(auto d:A)
21 {
22 auto ptr = lower_bound(B.begin(),B.end(),d-diff);
23 if(ptr!=B.end() && *ptr==d-diff)
24 {
25 result.emplace_back(d);
26 result.emplace_back(d-diff);
27 return result;
28 }
29 }
30 }
31 else
32 {
33 for(auto d:B)
34 {
35 auto ptr = lower_bound(A.begin(),A.end(),d-diff);
36 if(ptr!=A.end() && *ptr==d-diff)
37 {
38 result.emplace_back(d-diff);
39 result.emplace_back(d);
40 return result;
41 }
42 }
43 }
44 return result;
45 }
46 };