Submission

Status:

[PPPPP][PPPPP][PPPPP-SSSS]

Subtask/Task Score:

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

Score: 50

User: theem1502

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

Language: cpp

Time: 0.258 second

Submitted On: 2026-02-14 19:49:20

#include <bits/stdc++.h>
using namespace std;
int fenwick[20000003];
    //int newarray[20000000];
        long long prefixarray[20000003];
void update(int index, int value) {
    while(index < 20000000) {
        fenwick[index] += value;
        index += index & (-index);
    }

}

int ask(int index) {
    int sum = 0;
    while(index >0) {
        sum += fenwick[index];
        index -= index & (-index);
    }
    return sum;
}

int main() {
    int num;
    cin >> num;
    for (int i = 0; i < num; i++) {
        int first, second;
        cin >> first >> second;
        update(first + 1, 1);
        update(second + 1, -1);

    }
/*
    for (int i = 0; i < 20; i++) {
        cout << ask(i) << " ";
    }
    cout << "\n";
*/
    prefixarray[0] = ask(1);

    for (int i = 1; i <= 20000000; i++) {
        prefixarray[i] = prefixarray[i-1] + ask(i+1);
    }
/*
    for (int i = 0; i < 100; i++) {
        cout << prefixarray[i] << " ";
    }
    */
 //   cout << "\n";

    long long cnt = prefixarray[20000000];
  //  cout << "cnt: " << cnt << "\n";
    long long median = cnt / 2;
    if (median == 0) {
        median = 1;
    }
    cout << lower_bound(prefixarray, prefixarray + 20000001, median) - prefixarray;






}