#include <iostream>
//#include <fstream>
#include <iomanip>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std; const int maxn = * + ;
const int space = * ; int main()
{
//ofstream out("out.txt");
int m, n, kase = , volume; //降水总量
double eleva[maxn], height; //每个格子的海拔高度, 输入的高度
double percnt = ; //有多少百分比的区域
while (cin >> m >> n)
{
memset(eleva, , sizeof(eleva));
if (!m && !n) break;
for (int i = ; i < m; i++)
{
for (int j = ; j < n; j++)
{
cin >> height;
eleva[i * n + j] = height;
}
}
cin >> volume;
sort(eleva, eleva + m*n); //排序 int k, comput = ; //计算已经淹没地区的水量
for (k = ; k < m*n; k++)
{
int tmp = comput + (eleva[k] - eleva[k - ]) * space * k;
if (tmp >= volume)
break;
comput = tmp;
}
double water = (volume - comput) / (double)(k * space) + eleva[k - ]; //最终水平面高度是 = 当前被淹没的最高海拔 + 水面比当前海拔高出的高度 cout << "Region " << ++kase << "\n";
cout << fixed << setprecision()
<< "Water level is " << water << " meters.\n"; double total = m*n;
percnt = (k*100.0 / total) ; //被淹没区域比例 = 当前比水平面低的海拔数 / 区域总数 cout << fixed << setprecision()
<< percnt << " percent of the region is under water.\n\n";
} return ;
}
如图,将海拔按高矮排序好(先排序好,比较容易计算已经淹没地区的水量),由于是水往地处流,如果水量如图,淹没区域如图中阴影地区。

UVa815_Flooded!的更多相关文章

随机推荐

  1. 【PHP面向对象(OOP)编程入门教程】20.PHP5接口技术(interface)

    PHP与大多数面向对象编程语言一样,不支持多重继承.也就是说每个类只能继承一个父类.为了解决这个问题,PHP引入了接口,接口的思想是指定了一个实现了该接口的类必须实现的一系列方法.接口是一种特殊的抽象 ...

  2. 【C语言入门教程】4.7 指针的地址分配 - mallocl(), free()

    指针变量可指向任何类型的变量,在处理过程中,指针变量指向的变量通过传递变量的地址来实现,指针变量的取值是内存的地址,这个地址应当是安全的,不可以是随意的.否则,写入内存单元的值将使得已存放的数据或程序 ...

  3. tcl实现http请求

    package require "http" proc errLog args { puts $args } proc SendHttp args { global token s ...

  4. formValidator的一些验证实例

    原帖地址:http://www.cnblogs.com/talk/archive/2012/01/29/2330887.html $(function () { try { $.formValidat ...

  5. 全栈工程师学习Linux技术的忠告

    随着科技的普及,Linux作为最受欢迎的服务端操作系统,无人不知,无人不晓.当今,不论是服务器搭建,还是客户端开发,Linux系统的基础技能对全栈来说都是必备的,而了解如下几个问题可以更好的帮助你成为 ...

  6. Android学习笔记(三)——初探Intent

    //此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! Intent 是 Android 程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作 ...

  7. Activity的四个启动模式

    /** * Activity有四种启动模式(android:launchMode) * 分别是: * 1. standard(默认),可以不停的在栈中创建新的Activity * 2. singleT ...

  8. python入门教程链接

    python安装 选择 2.7及以上版本 linux: 一般都自带 windows: https://www.python.org/downloads/windows/ mac os: https:/ ...

  9. c#的问号?和双问号??

    1.问号?表示该变量可以为空 int? a=new int?(); Console.Writeline(a);//a是null 等价于: int? a=null; 也等价于下面这行,表示该变量默认为n ...

  10. IP转换成LONG 的 问题

    如何将四个字段以点分开的IP网络址协议地址转换成整数呢?PHP里有这么一个函数ip2long.比如 <?php echo ip2long("10.2.1.3"); ?> ...