Submission

Status:

[PPPPP][PPPPP][PPPPPPPPPP]

Subtask/Task Score:

{20/20}{30/30}{50/50}

Score: 100

User: 38408

Problemset: ห้องสมุดเมือง 3M

Language: cpp

Time: 0.004 second

Submitted On: 2026-10-13 14:59:36

#include <bits/stdc++.h>
using namespace std;

using ll = long long;

int main() {
    int n;
    cin >> n;
    vector<pair<ll, ll>> num(n);
    ll K = 0;
    for (int i = 0; i < n; i++) {
        ll x, y;
        cin >> x >> y;
        num[i] = {x, y};
        K += y - x;
    }

    ll target = max(1LL, K / 2);

    ll left = 0, right = 20000000;

    while (left < right) {
        ll mid = left + (right - left) / 2;
        ll count = 0;

        for (int i = 0; i < n; i++) {
            ll x = num[i].first;
            ll y = num[i].second;

            count += max(0LL, min(y, mid + 1) - x);
        }

        if (count >= target) {
            right = mid;
        } else {
            left = mid + 1;
        }
    }

    cout << left << '\n';
    return 0;
}