uva815洪水问题
将每个方块排序之后,再一次判断是否能够达到高度,一开始以为向方块里面注水。。。。。。。。。。。。。。。。。。。。后来发现是在方块的上面的注水,我就说怎么不对劲。。。。
将体积/100之后就可以只使用高度来计算了
输出的最后有一个空行,我。。。。。。。。。。。。。
#include <iostream> #include <iomanip> #include <algorithm> #include <cstdio> using namespace std; int main() { int m,n,i; double volume,height,per; int kase=1; while(cin>>m>>n&&m&&n) { int hapi[1005]; for(i=1;i<=m*n;i++) { cin>>hapi[i]; } sort(hapi+1,hapi+m*n+1); // for(int i=1;i<=m*n;i++) // cout<<hapi[i]<<" "; cin>>volume; //计算部分 volume/=100; for(i=2;i<=m*n;i++) { int tot=(hapi[i]-hapi[i-1])*(i-1); if(volume>=tot) { volume-=tot; } else { height=hapi[i-1]+volume/(i-1); volume=0; per=(i-1)*1.0/n/m; break; } } if(volume) { height=volume/m/n*1.0+hapi[n*m]; per=1.0; } cout<<"Region "<<kase++<<endl; // printf("Water level is %.2lf meters.\n",height); // printf("%.2lf percent of the region is under water.\n\n",per*100.0); cout<<"Water level is "<<fixed<<setprecision(2)<<height<<" meters."<<endl; cout<<fixed<<setprecision(2)<<per*100.0<<" percent of the region is under water."<<endl<<endl;; } }