#include<bits/stdc++.h>
using namespace std;
//先lower_bound,再上溯
int L,T,W,H,R,N;
int a[1000010];//a[i]表示i到i-1之间的矩形面积
long long size[1000010],sum,half;//size[k]表示k之前的矩形面积
int lower(long long* a,int left,int right,long long value){
while(left<right){
int mid=left+(right-left)/2;
if(a[mid]<value) left=mid+1;
else right=mid;
}
return left;
}
int main() {
scanf("%d%d",&R,&N);
for(int i=0;i<N;i++){
scanf("%d%d%d%d",&L,&T,&W,&H);
for(int j=L+1;j<=L+W;j++) a[j]+=H;
}
for(int i=1;i<=R;i++){
size[i]=a[i]+size[i-1];
}
sum=size[R];
if(sum%2==0) half=sum/2;
else half=sum/2+1;
int ans=lower(size,1,R+1,half);
while(ans<R&&size[ans]==size[ans+1]) ans++;
printf("%d",ans);
}
POJ矩阵分割
最新推荐文章于 2022-03-20 13:26:48 发布