一直在做黑白棋,估计是格式错误一直A不了,于是跳过去了,看这道题挺水的,第一次在UVa上出PE有点小激动,原来UVa也有PE啊,但是PE的原因让我很无语,输出是两个数据间有空行,习惯的控制了最后不输出多余的空行,所以才PE的。。。
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define N m * n
#define V_WATER (water[i + 1] - water[i])
using namespace std;
int water[1000];
int main() {
int m, n, times = 0;
double V;
while(cin >> m >> n&& m) {
double k = m * n, d = 1, sum = 0;
double vegion = 0, tall = 0;
for(int i = 0; i < N; i++)
cin >> water[i];
cin >> V;
V /= 100;
sort(water, water + N);
tall = water[0];
for(int i = 0; i < N - 1; i++) {
sum += d * (V_WATER);
if(sum < V) {
vegion = sum;
tall += V_WATER;
d++;
} else {
tall += (V - vegion) / d;
sum += d * (V - vegion);
break;
}
}
if(sum < V)
tall += (V - sum) / d;
cout << "Region " << ++times << endl;
printf("Water level is %.2lf meters.\n", tall);
printf("%.2lf percent of the region is under water.\n\n", d * 100 / k);
memset(water, 0, sizeof(water));
}
}
浙公网安备 33010602011771号