这个题是个水题,读者请自行看代码吧,秒懂的
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
int main(){
int m,n,kase=0;
while(cin>>m>>n,m&&n){
n*=m;
double a[n];
for(int i =0; i<n ; i++) cin>>a[i];
sort(a,a+n);
double v;
cin>>v;
v/=100;
cout<<"Region "<<++kase<<endl;
double v_have=0;
double pre_out,high;
for(int i =0; i<n ; i++)
v_have+=a[i];
double v_max=a[n-1]*n-v_have;
if(v_max<=v){
high=(double)(v-v_max)/n+a[n-1];
pre_out=100;
}
else{
int up;
v_have=a[0];
for(int i =1; i<n; i++){
v_have+=a[i];
if((i+1)*a[i]-v_have>v) { up=i; break;}
}
//cout<<"up="<<up<<endl;
//cout<<"v-have="<<v_have<<endl;
v_have-=a[up];
high=(double)(v+v_have)/up;
pre_out=(double)(up)/n*100;
}
printf("Water level is %.2f meters.\n",high);
printf("%.2f percent of the region is under water.\n",pre_out);
printf("\n");
}
return 0;
}