题解:CF1832D1 Red-Blue Operations (Easy Version)

· · 题解

分情况讨论。

代码:

#include <bits/stdc++.h>
#define int long long

using namespace std;
const int maxn = 1e4 + 10;

int n, q;
int a[maxn];

signed main() {
    ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
    cin >> n >> q;
    for (int i = 1; i <= n; ++i) cin >> a[i];
    sort(a + 1, a + n + 1);
    while (q--) {
        int s = 0, x, ans = 1e18;
        cin >> x;
        for (int i = 1; i <= n; ++i) {
            if (!x) {
                ans = min(ans, a[i]);
                continue;
            }
            if (i == n) {
                if (x & 1) {
                    s += a[i] + x;
                    ans = min(a[i] + x, ans);
                    x--;
                    s -= x / 2;
                    ans = min(ans, s / n);
                } else {
                    s += a[i] - x / 2;
                    ans = min({ans, a[i], s / n});
                }
            } else ans = min(ans, a[i] + x), s += a[i] + x;
            if (x != 0) x--;
        }
        cout << ans << ' ';
    }
}