杨思越
(灵珠敖丙)
1
`#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int L=-1000000;R=1000000;
bool cmp(int x,int y){
return x<y;
}
int n,d;
int x[200005];
ll sumx[200005];
ll sumy[200005];
int y[200005];
int main(){
cin>>n>>d;
for(int i=1;i<=n;i++){
cin>>x[i]>>y[i];
}
sort(x+1,x+1+n,cmp);
sort(y+1,y+1+n,cmp);
for(int i=1;i<=n;i++){
sumx[i]=sumx[i-1]+x[i];
sumy[i]+sumy[i-1]+y[i];
}
for(int i=L;i<=R;i++){//遍历x
//现在有一个有序数列x和一个数字x
//求这个数列中有几个数比x大,几个比x小
//二分
int l=0,r=n;
int mid;
while(l<r){
mid=(l+r+1)/2;
if(x[mid]<=i){
l=mid;
}
else{
r=mid-1;
}
}
ll ansx=i*(2*mid-n)-(sumx[mid])+sumx[n]-sumx[mid+1];
l=0;
r=n;
mid=0;
ll D=d-ansx;
if(D<0){
continue;
}
//老师,然后这里怎么继续写啊?我记得是低维化,化为y<=d-x,但是我不知道这里的y是怎么算的
}
return 0;
}
/*
*/`