http://acm.hust.edu.cn/vjudge/contest/123676#problem/P 密码5201
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(int a,int b)
{
return a<b;
}
int main()
{
//freopen("C:\\Users\\5201\\Desktop\\1.txt","r",stdin);
int n,m,no=1;;
while(scanf("%d%d",&n,&m))
{
if(n==0&&m==0) break;
printf("Region %d\n",no++);
int a[1000]={};
int i;
for(i=1;i<=n*m;i++) scanf("%d",&a[i]);
sort(a+1,a+n*m+1,cmp);
int k;
scanf("%d",&k);
double h=a[1];
for(i=1;i<n*m;i++)
{
int t=a[i+1]-a[i];
t*=i*100;
if(t<k)
{
k-=t;
h+=a[i+1]-a[i];
}
else
{
h=h+1.0*k/i/100;
break;
}
}
if(i>=n*m) h=h+1.0*k/100/i;
printf("Water level is %.2lf meters.\n",h);
printf("%.2lf percent of the region is under water.\n\n",100.0*i/n/m);
}
}
ps
1.从小到大排序。
2.先装满第i个和第i+1个格子间的空档。
3.循环结束后判断是否覆盖了所有格子。
4.最后有个空白的换行。