问题描述:
题解:
// 难,考试时可以选择暴力或放弃
#include<bits/stdc++.h>
using namespace std;
long long a[4];
int main(){
for (int i = 0; i < 4; i ++) {
cin >> a[i];
}
long long ans = *max_element(a, a + 4);
for (int i = 0; i < 4; i ++) {
long long m1 = 1LL << 40;
for (int j = 0; j < 4; j ++) {
if (j != i) {
m1 = min(m1, a[j]);
}
}
ans = max(ans, a[i] + m1);
}
for (int i = 0; i < 4; i ++) {
for (int j = 0; j < 4; j ++) {
if (i != j) {
long long m1 = 1LL << 40;
for (int k = 0; k < 4; k ++) {
if (k != i && k != j) {
m1 = min(m1, a[k]);
}
}
long long m2 = min(m1, a[j]);
long long x = a[i] + 2 * m2;
if (m1 >= m2) {
m1 -= m2;
x += m1 / 3 * 3;
if (m1 % 3 == 2) {
x += 1;
}
}
ans = max(ans, x);
}
}
}
cout << ans << '\n';
return 0;
}