提交时间:2024-01-11 15:13:44

运行 ID: 24633

#include<bits/stdc++.h> #define int long long #define pii pair<int,int> #define p1(x) ((x).first) #define p2(x) ((x).second) using namespace std; int a[100300],b[100300]; int n,k; inline pii calc(int lim){ int res=0,cnt=0; priority_queue<int,vector<int>,greater<int>>A,B; B.push(4e9); A.push(4e9); for(int i=1;i<=n;i++){ A.push(a[i]-lim); if(min(A.top(),B.top())+b[i]<0){ if(A.top()<B.top()) cnt++,res+=A.top()+b[i],A.pop(); else res+=B.top()+b[i],B.pop(); B.push(-b[i]); } } return {res,cnt}; } signed main(){ ios::sync_with_stdio(0); cin>>n>>k; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=1;i<=n;i++) cin>>b[i]; int l=-2e9,r=2e9; while(l<r){ int mid=l+r+1>>1; if(p2(calc(mid))<=k)l=mid; else r=mid-1; } cout<<p1(calc(l))+l*p2(calc(l))<<endl; return 0; }