Submission

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

Score: 0

User: detectives_conan

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

Language: cpp

Time: 0.002 second

Submitted On: 2025-03-14 14:57:21

/*
    Author : detective conan
    Problem : Banana picker
    created : 13/03/2025 20:27 UTC+7
*/
#include <bits/stdc++.h>
#define FOR(i, s, t) for(int i = s; i <= t; ++i)
#define rep(i, s, t) for(int i = s; i >= t; --i)
#define HAVE_TESTCASE false
#define DB(n, s) cout << n << s
#define ANS(n, s) DB(n, s)
#define mod (int)(1e9 + 7)
#define sum(a, b) ((a%mod) + (b%mod))%mod
#define mul(a, b) ((a%mod) * (b%mod))%mod
#define conan cin.tie(nullptr)->sync_with_stdio(false)

using namespace std;
using i64 = int64_t;
using u64 = unsigned i64;
using u32 = unsigned;

i64 n, k, l, r, ans;
vector<array<i64, 2>> vc;

void solve(){
    cin >> n;
    vc.resize(n + 1);
    FOR(i, 1, n) cin >> vc[i][0] >> vc[i][1], vc[i][1]--, r = max(r, vc[i][1]), k += (vc[i][1] - vc[i][0] + 1);
    k /= 2ll;
    l = 0ll, r = 1e18, ans = -1ll;
    while(l <= r){
        i64 mid = (l + r) >> 1ll, cnt = 0ll;
        FOR(i, 1, n){
            if(mid >= vc[i][0] && mid <= vc[i][1]) cnt += (mid - vc[i][0] + 1ll);
            else if(mid > vc[i][1]) cnt += (vc[i][1] - vc[i][0] + 1ll);
        }
        if(cnt >= k) ans = mid, r = mid - 1ll;
        else l = mid + 1ll;
    }
    ANS(ans, '\n');
}

int main(){
    conan;
    int t = 1;
    if(HAVE_TESTCASE) cin >> t;
    while(t--) solve();
}