2 条题解
-
1
#include <bits/stdc++.h> #define int long long using namespace std; int n, x, v, sum, ans, res1, res2, res3, a[100005]; signed main() { std::ios::sync_with_stdio(false), cin.tie(0), cout.tie(0); cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i], sum += a[i]; if (a[i] > a[res1]) res3 = res2, res2 = res1, res1 = i; else if (a[i] > a[res2]) res3 = res2, res2 = i; else if (a[i] > a[res3]) res3 = i; } swap(a[1], a[res1]), swap(a[2], a[res2]), swap(a[3], a[res3]); if (a[1] * 2 > sum - a[1]) cout << -1, exit(0); for (int i = 1; i <= n; i++) if (a[i] & 1) x++, a[i]--, sum--; if ((sum - a[1]) / 2 >= a[1]) { v = sum / 6; x += sum - v * 6; } else if (sum - a[1] - a[2] >= a[2]) { a[2] = a[3] = (sum - a[1]) / 2; if (a[2] & 1) x += 2, a[2]--, a[3]--; x += a[1] - a[2]; v = a[2] / 2; } else { a[3] = sum - a[1] - a[2]; v = a[3] / 2; x += a[1] + a[2] - 2 * a[3]; } cout << min(v, v - (int)ceil((3 * v - x) / 9.0)); exit(0); }
代码如上,最优解
信息
- ID
- 28
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- (无)
- 递交数
- 127
- 已通过
- 13
- 上传者