题意
给定一张 N∗M 的地图,每个格子有一个海拔高度。有一个降雨量 V ,求降水后水面的高度和被水覆盖的陆地的体积。
二分降水后的水面高度。
顺便处理被水覆盖的体积。
#include <cstdio>
#define N 410
int A[N][N],n,m,v;
long long Ans;
inline bool check(int x){
long long w=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(A[i][j]<x) w+=x-A[i][j];
return w>=v;
}
int main(){
scanf("%d%d%d",&n,&m,&v);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
scanf("%d",&A[i][j]);
int l=1,r=v,mid;
while(l<r) check(mid=l+r>>1)?r=mid:l=mid+1;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(A[i][j]<=r) Ans+=A[i][j];
return printf("%d %lld\n",r,Ans),0;
}