POJ 1877
2011-06-12 13:51
211 查看
这一题其实可以写得很简单,只是对于差值的统计比较陌生,连续WA了5,6次才过了,我了个叉。。。
#include <cstdio> using namespace std; const int MAX = 10000; int A[MAX]; void quicksort( int left , int right ) { int i = left ; int j = right; int key = A[i]; while( i < j ) { while( A[j] > key && i < j ) --j; if( i < j ) A[i++] = A[j]; while( A[i] < key && i < j ) ++i; if( i < j ) A[j--] = A[i]; } A[i] = key; if( left < i - 1 ) quicksort( left , i - 1 ); if( i + 1 < right ) quicksort( i + 1 , right ); } int main() { int row,col,n2; int maxnumber; double sum,mid,high; int k = 1; while( scanf("%d%d",&row,&col) , row != 0 || col != 0 ) { n2 = row*col; for( int i = 0 ; i != n2 ; ++i ) scanf("%d",&A[i]); scanf("%d",&maxnumber); quicksort( 0 , n2 - 1 ); if( k != 1 ) printf("/nRegion %d/n",k++); else printf("Region %d/n",k++); if( maxnumber == 0 ) { printf("Water level is 0.00 meters./n"); printf("0.00 percent of the region is under water./n"); } else { sum = 0 ;high = 0 ; int i; for( i = 1 ; i < n2 ; ++i ) { mid = ( A[i] - A[i-1] ) * i * 100; if( sum + mid >= maxnumber ) break; sum += mid; high += A[i] - A[i-1]; } high += ( maxnumber - sum )/100.0/i; printf("Water level is %.2lf meters./n",high + A[0]); printf("%.2lf percent of the region is under water./n",i*100.0/n2); } } }
相关文章推荐
- 【贪心】【模拟】[POJ1877]Flooded!
- POJ-1877 Flooded! 赛前水一题
- poj1877模拟题
- POJ 1877 Flooded!
- 【原创】【贪心优化暴力模拟】Flooded! POJ 1877
- poj 1877 Flooded!
- poj_1877
- poj 1877 Flooded!
- POJ-1877 Flooded!(贪心模拟)
- (使用STL自带的排序功能进行排序)POJ 1877 Flooded!()
- POJ-1877,3903 LIS
- poj1877 Flooded!(模拟)
- POJ 1877 Flooded!(二分)
- POJ 1877 Flooded!
- POJ1877 - Flooded! - 模拟
- POJ 1061 青蛙的约会
- POJ_1789 Truck History
- POJ 1011 Sticks
- POJ 1679 The Unique MST
- Poj 2184 Cow Exhibition