Submission
Status:
[P-SSS][SSSSS][SSSSSSSSSS]
Subtask/Task Score:
{0/20}{0/30}{0/50}
Score: 0
User: NovemNotes
Problemset: ห้องสมุดเมือง 3M
Language: cpp
Time: 0.002 second
Submitted On: 2026-03-11 14:35:38
#include <bits/stdc++.h>
using namespace std;
int n;
int sz=0;
vector<pair<int,int>> vp;
int main(){
ios_base::sync_with_stdio(false);cin.tie(NULL);
cin >> n;
for(int i=0;i<n;i++){
int a,b;cin >> a >> b;
sz+=(b-a);
vp.emplace_back(a,1);
vp.emplace_back(b,-1);
}
sort(vp.begin(),vp.end(),[](const auto &x,const auto &y){
if(x.first==y.first)return x.second < y.second;
return x.first < y.first;
});
// for(auto &[x,y]:vp){
// cout << x << "\n";
// }
int target = sz/2;
int sum=0;
int l=-1,r=-1,sz=-1;
for(int i=0;i<vp.size()-1;i++){
sum += vp[i].second;
if(sum<=0)continue;
int first = vp[i].first;
int last = vp[i+1].first-1;
int range = vp[i+1].first - vp[i].first;
// cout << first << " " << last << " " << range << " " << target << "\n";
if(range*sum>=target){
l=first;
r=last;
sz=sum;
break;
}else{
target-=range;
}
}
int ans=-1;
// cout << l << " " << r << " " << sz << "\n";
while(l<r){
int mid = l+(r-l)/2;
int rangeL = mid-l+1;
if(rangeL*sz<target){
ans=mid;
l=mid;
target-=(rangeL*sz);
}else{
r=mid-1;
}
}
cout << l+1 << "\n";
// cout << ans << " " << l-1 << "\n";
// cout << l << " " << r << " " << sz << "\n";
return 0;
}
/*
2
0 6
2 11
*/