1467C - Three Bags (CF#695 Div. 2)
题意
三个袋子每个袋子里有一些数,你每次可以从一个袋子里取出一个数,再从另一个袋子里取出一个数,将后者减去前者并放入后者所在的袋子。问最后剩下的那个袋子里的数最大是多少?
思路
完全理解不了为什么是这个结论,先挖坑,等我回去和室友讨论一下再补上
代码
#include<bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;
int main()
{
ll min1 = INF, min2 = INF, min3 = INF;
ll sum1 = 0, sum2 = 0, sum3 = 0;
int n1, n2, n3;
cin >> n1 >> n2 >> n3;
for(ll i = 0, x; i < n1; i++)
{
cin >> x;
min1 = min(min1, x);
sum1 += x;
}
for(ll i = 0, x; i < n2; i++)
{
cin >> x;
min2 = min(min2, x);
sum2 += x;
}
for(ll i = 0, x; i < n3; i++)
{
cin >> x;
min3 = min(min3, x);
sum3 += x;
}
ll sum = sum1 + sum2 + sum3;
ll minn = min(min1 + min2, min1 + min3);
minn = min(min3 + min2, minn);
minn = min(sum1, minn);
minn = min(sum2, minn);
minn = min(sum3, minn);
cout << sum - minn * 2 << endl;
}