Submission
Status:
[PPPPP][-SSSS][SSSSSSSSSS]
Subtask/Task Score:
{20/20}{0/30}{0/50}
Score: 20
User: winniecoder1029
Problemset: ห้องสมุดเมือง 3M
Language: cpp
Time: 0.002 second
Submitted On: 2026-03-04 21:46:00
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
long long amount = 0;
cin >> n;
int x[n], y[n];
for (int i = 0; i<n; i++) {
cin >> x[i] >> y[i];
amount += y[i] - x[i];
}
// median = amount >> 1
//cout << Lbook;
//start binary search, while amount > 1
long long pivot = 16777216;
long long step = pivot/2;
long long Lbook = 0;
while (step >= 1) {
Lbook = 0;
for (int i = 0; i<n; i++) {
if (x[i] < pivot) {
long long upper = y[i] < pivot ? y[i] : pivot;
Lbook += upper - x[i];
}
}
//cout << "!!" << pivot - step ;
if (Lbook <= amount/2) {
pivot += step;
} else {
pivot -= step;
}
//cout << step <<" , " << pivot << endl;
step/=2;
}
Lbook = 0;
for (int i = 0; i<n; i++) {
if (x[i] < pivot) {
long long upper = y[i] < pivot ? y[i] : pivot;
Lbook += upper - x[i];
}
}
if (Lbook < pivot/2) {
cout << pivot;
} else {
cout << pivot - 1;
}
return 0;
}