Input file: standard input
Output file: standard output
Time limit: 1 second
Memory limit: 64 megabytes
众所周知龙龙虽然很可爱但其实是俱乐部最强的人。这不他今年去打 EC-Final 辣。处于一些特殊原因,龙龙订了一间主题房,里面有一个大大的浴缸。虽然龙龙很想使用这个浴缸但是傲娇的龙龙打算掩盖自己的想法。他问大佬,假设已知这个浴缸的尺寸,如果往这个浴缸里注入 n 升(单位:L)水,那么从浴缸顶部到水面的距离有多长。
对于浴缸尺寸的描述,我们将浴缸的俯视图视为一个矩形,将浴缸从俯视图上按单位长度分为一个个方格,对每个方格有一个数字 hi,j 分别描述从浴缸顶部到当前位置底部的距离。
Input
第一行输入两个正整数 n, m, v 由空格间隔开,保证 1 ≤ n, m ≤ 1000, 1 ≤ v ≤ 109,表示这个浴缸的长与宽,以及注入的水的体积。
接下来 n 行每行输入 m 个数字,其中第 i 行第 j 个数字是 hi,j (1 ≤ hi,j ≤ 100),表示浴缸在这一块方格中从顶部到底部的距离。
Output
请输出一个非负整数,表示浴缸从顶部到水面的距离。傲娇的龙龙其实早就在心里想了好多泡澡的事情辣,所以可以保证输出一定是一个整数,并且一定不会有水溢出,他早就考虑好辣。
Example
standard input standard output
4 3 6 1
2 2 1
2 2 1
2 2 1
1 1 1
3 3 15 4
1 2 3
4 5 6
7 8 9
Note
所有的长度单位都是分米,分米和升的单位转换关系是:1 立方分米(单位:dm3)= 1 升(单位:L)。
而且保证浴缸矩阵是非严格单调的,即保证不会出现水填满了其中的一部分但有一部分比水平面低的地方没有被水填充的情况。
思路:画画图差不多就出来了,看清题意,想清楚浴缸
#include<bits/stdc++.h>
using namespace std;
const int maxx=1e3+10;
int a[maxx][maxx];
int main()
{
std::ios::sync_with_stdio(false);
int n,m,v;
cin>>n>>m>>v;
for(int i=1; i<=n; i++)
{
for(int j=1; j<=m; j++)
cin>>a[i][j];
}
long long int sum=0;
int u=-1;
while(sum<v)
{ int maxx=-1;
for(int i=1; i<=n; i++)
{
for(int j=1; j<=m; j++)
{
if(a[i][j]>maxx)
maxx=a[i][j];
}
}
u=maxx;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(a[i][j]==maxx)//每一次都用水把最深的小方块灌上
{
sum++;
a[i][j]--;
}
}
}
maxx=-1;
}
cout<<u-1<<endl;
return 0;
}