p1m2

ps:就一个普通的二分。。。永远都是debug的时间比写代码的时间还长

#pragma warning(disable:4996)
#include<bits/stdc++.h>
#define ull unsigned long long
#define ll long long
#define P pair<int, int>
#define pb push_back
#define mp make_pair
#define pp pop_back
#define lson root << 1
#define INF (int)2e9 + 7
#define rson root << 1 | 1
#define LINF (unsigned long long int)1e18
#define sc(x) scanf("%d", &x)
#define pr(x) printf("%d\n", x)
#define mem(arry, in) memset(arry, in, sizeof(arry))
using namespace std;

inline void upd(int &x, int y) { x < y && (x = y); }

const int N = 300005;

int T, n;
int a[N];

bool check(int mid) {
    ll res = 0;
    for (int i = 1; i <= n; ++i) {
        if (a[i] - mid == 1 || a[i] - mid == 0) continue;
        if (a[i] < mid) res += -2 * 1ll * (mid - a[i]);
        else if (a[i] > mid) res += (ll)((a[i] - mid) / 2) * 2;
    }
    return res >= 0;
}

int main()
{
    sc(T);
    while (T--) {
        sc(n);
        for (int i = 1; i <= n; ++i) sc(a[i]);
        int l = 0, r = 100000000;
        int ans = -1;
        for (int i = 1; i <= 50; ++i) {
            int mid = (l + r) >> 1;
            if (check(mid)) {
                ans = mid;
                l = mid + 1;
            }
            else r = mid;
        }
        cout << ans << endl;
    }
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/zgglj-com/p/9473929.html