有一个n*m(m>=1&&n<=30)的网格,每个盒子是边长为10米的正方形,网格四周是无限长的墙壁。输入每个盒子的海拔高度,以及网格内雨水的总体积,输出水位的海拔高度和有多少百分比的区域有水。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int s[10000],s1[10000],s2[10000];
double sum2;
int main ()
{
FILE *fp;
fp=fopen("D:\c.txt","w");
int a,b,c,d;
int i,j,k,l;
int e=0;
int m,n;
int temp;
int t;
int time=0;
while(scanf("%d%d",&m,&n)!=EOF)
{
time++;
if(m==0)
{
return 0;
}
int y=m*n;
for(i=1; i<=y; i++)
{
scanf("%d",&s[i]);
}
scanf("%d",&t);
for(i=1; i<=y; i++)
{
k=i;
for(j=i; j<=y; j++)
{
if(s[k]>s[j])
{
k=j;
}
}
if(i!=k)
{
temp=s[k];
s[k]=s[i];
s[i]=temp;
}
}
for(i=1; i+1<=y; i++)
{
s1[i]=(s[i+1]-s[i])*i*100;
}
double sum1=0;
for(i=1; i+1<=y; i++)
{
sum1+=s1[i];
if(t<sum1)
{
break;
}
}
sum2=sum1-s1[i];
sum1=t-sum2;
double len1=(sum1*1.0/(100*i));
double len;
len=len1+s[i];
double p=(i*1.0*100/y);
printf("Region %d\nWater level is %.2lf meters.\n%.2lf percent of the region is under water.\n\n",time,len,p);
sum1=0;
sum2=0;
len=0;
len1=0;
memset(s,0,sizeof(s));
memset(s1,0,sizeof(s1));
}
return 0;
}