Submission

Status:
[-SSSS][SSSSS][SSSSSSSSSS]

Score: 0

User: Pera

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

Language: cpp

Time: 0.002 second

Submitted On: 2025-03-24 21:05:48

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

int countbooklessthanmid(vector<pair<int, int>>& libs, int mid) {
    int count = 0;
    for (auto& lib : libs) {
        if (lib.first <= mid) {
            count += min(mid + 1, lib.second) - lib.first;
        }
    }
    return count;
}

int main() {
    int n; cin >> n;
    vector<pair<int, int>> libs(n);
    int books{0};
    for (int i = 0; i < n; i++) {
        int x, y;
        cin >> x >> y;
        books += y - x;
        libs[i].first = x;
        libs[i].second = y;
    }

    int medianidx = (books - 1) / 2;
    int low = 0;
    int high = 20000000;
    int result{};

    while (low <= high) {
        int mid = (low + high) / 2;

        if (countbooklessthanmid(libs, mid) >= medianidx) {
            high = mid - 1;
            result = mid;
        } else {
            low = mid + 1;
        }
    }
    cout << result << '\n';
}