T5 曼哈顿多焦椭圆不会写了求助!!!

`#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;
}
/*

*/`