| 比赛 |
进阶指南第0章测试 |
评测结果 |
AAAAAAAAAA |
| 题目名称 |
Brownie Slicing G |
最终得分 |
100 |
| 用户昵称 |
rzzakioi |
运行时间 |
0.197 s |
| 代码语言 |
C++ |
内存使用 |
2.02 MiB |
| 提交时间 |
2026-03-14 09:53:06 |
显示代码纯文本
#include<cstdio>
using namespace std;
int r,c,a,b,n[505][505];
bool check(int k){
int x=0,y=0,res=0;
for(int i=1;i<=r;i++){
int num=0;
y=0;
for(int j=1;j<=c;j++){
if(n[i][j]-n[x][j]-n[i][y]+n[x][y]>=k){
y=j;
num++;
}
}
if(num>=b){
x=i;
res++;
}
}
return res>=a;
}
int main(){
freopen("brownie.in","r",stdin);
freopen("brownie.out","w",stdout);
scanf("%d%d%d%d",&r,&c,&a,&b);
for(int i=1;i<=r;i++){
for(int j=1;j<=c;j++){
scanf("%d",&n[i][j]);
}
}
for(int i=1;i<=r;i++){
for(int j=1;j<=c;j++){
n[i][j]+=n[i][j-1];
}
}
for(int i=1;i<=r;i++){
for(int j=1;j<=c;j++){
n[i][j]+=n[i-1][j];
}
}
int l=0,r=1e9,ans=0;
while(l<=r){
int mid=(l+r)>>1;
if(check(mid)){
l=mid+1;
ans=mid;
}
else r=mid-1;
}
printf("%d",ans);
return 0;
}