이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
using namespace std;
#define int long long
vector<pair<int,int>> cake;
int ans;
int dostuf(int pen){
ans=0;
map<int,pair<int,int>>mp;
for(auto[i,j]:cake) if(j>=pen)
mp[i].first+=j-pen,mp[i].second--;
if(mp.empty())return 0;
int prv=mp.begin()->first;
pair<int,int>mmin,now,bst;
for(auto&[i,j]:mp) j.first-=2*i-2*prv,prv=i,
now.first+=j.first,now.second+=j.second,mmin=min(mmin,now),
bst=max(bst,{now.first-mmin.first,now.second-mmin.second});
ans=bst.first;
return -bst.second;
}
signed main(){
int n,m;
cin>>n>>m;
cake.resize(n);
for(auto&[i,j]:cake)
cin>>j>>i;
int l=-1e9,r=1e9,res=0;
while(l<=r){
int mid=l+r>>1;
if(dostuf(mid)>=m)
l=mid+1,res=mid;
else r=mid-1;
}
dostuf(res);
cout<<ans+res*m;
}
컴파일 시 표준 에러 (stderr) 메시지
cake3.cpp: In function 'int main()':
cake3.cpp:28:18: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
28 | int mid=l+r>>1;
| ~^~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |