Submission

Status:
[PPPPP][PPPPP][PPPPPPPPPP]

Score: 100

User: qwerty

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

Language: cpp

Time: 0.002 second

Submitted On: 2025-03-15 21:10:43

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

#define ll long long
vector<ll> start;
vector<ll> ending;
ll len = 0;
ll l = 0, r = 2e9;
bool check(ll mid, int n) {
    ll val = 0;
    for (int i = 1 ; i <= n ; i++) {
        if (mid < start[i]) continue;
        if (mid >= ending[i]) val+=ending[i]-start[i]+1;
        else val+=mid-start[i]+1;
    }
    if (val <= max(len/2 - 1, 0LL)) return true;
    return false;
}

int main() {
    ll n;
    cin >> n;
    start.resize(n+1);
    ending.resize(n+1);
    for (ll i = 1 ; i <= n ; i++) {
        ll a, b;
        cin >> a >> b;
        start[i] = a;
        b--;
        ending[i] = b;
        len+=b-a+1;
    }

    while (l<r) {
        ll mid = (l+r)/2;
        if (check(mid, n)) {
            l = mid+1;
        } else {
            r = mid;
        }
    }
    cout << l;
}