#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
bool cmp(int a,int b){
return a<b;
}
int main()
{
//FILE *fp=fopen("res.txt","w");
int m,n,times=0;
int alti[901];
int res[901];
while((cin>>m>>n)&&m&&n){
times++;
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
cin>>alti[i*n+j];
}
}
sort(alti,alti+m*n,cmp);
int Vwater;
cin>>Vwater;
res[0]=0;
for(int i=1;i<m*n;i++){
res[i]=res[i-1]+100*i*(alti[i]-alti[i-1]);
}
int i;
for(i=0;i<m*n;i++){//其实可以用二分查找,但是懒了
if(res[i]>=Vwater){
break;
}
}
double high;
if(i==0){
high=alti[0];
}else{
high=alti[i-1]+((double)Vwater-res[i-1])/(i*100);
}
double level=(double)i*100/(m*n);
printf("Region %d\n",times);
printf("Water level is %.2lf meters.\n",high);
printf("%.2lf percent of the region is under water.\n\n",level);
/*
fprintf(fp,"Region %d\n",times);
fprintf(fp,"Water level is %.2lf meters.\n",high);
fprintf(fp,"%.2lf percent of the region is under water.\n\n",level);
*/
}
return 0;
}
水题一个
注意一下精度即可
ps:Debug里面有个数据是错的
本文分享了一道关于水位计算的编程题解决方案,重点介绍了如何处理数组排序、累积求和及浮点数精度问题,确保计算结果准确无误。
271

被折叠的 条评论
为什么被折叠?



