Submission

Status:
[PP-SS][SSSSS][SSSSSSSSSS]

Score: 0

User: krittaphot

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

Language: cpp

Time: 0.003 second

Submitted On: 2025-03-15 22:57:23

#include <bits/stdc++.h>

using namespace std;

long long solve(vector<pair<int,int>> &v, long long mid)
{
    long long cnt = 0;
    for(auto &i : v){
        if(mid >= i.first){
            cnt += min((long long)i.second - i.first, mid - i.first + 1);
        }
    }
    return cnt;
}

int main()
{
    int n;
    cin >> n;
    vector<pair<int,int>> v(n);
    long long total = 0;

    for(int i = 0; i < n; i++){
        cin >> v[i].first >> v[i].second;
        total += v[i].second - v[i].first;
    }

    long long median = total / 2; 
    long long left = 0, right = 2000000000, ans;

    while(left <= right){
        long long mid = left + (right - left) / 2;
        if(solve(v, mid) < median){
            left = mid + 1;
        } else {
            ans = mid;
            if (left == right) break; 
            right = mid - 1;
        }
    }

    cout << ans;
    return 0;
}