poj_1877

这个题坑极多,附代码和测试数据,如果测试数据都过了,基本上就能AC了,希望对大家有所帮助

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int cmp(const void*a, const void*b)
{
    return *(int*)a - *(int*)b;
}
int main()
{
    int m, n, a[1000], i, water, num, cases = 0;
    double high, waters;
    while (scanf("%d%d", &m, &n))
    {
        if (m == 0 && n == 0)
          break;
        memset(a, 0, sizeof(a));
        cases++;
        for (i = 0; i<m*n; i++)
        {
            scanf("%d", &a[i]);
        }
        num = m*n;
        scanf("%d", &water);
        qsort(a, num, sizeof(int), cmp);
        high = a[0], waters = 0;
        if (num == 1)
        {
            printf("Region %d\n", cases);
            printf("Water level is %.2f meters.\n", a[0] + (double)water / 100);
            printf("%.2f percent of the region is under water.\n\n", (double)100);
            continue;
        }
        if (water == 0)
        {
            printf("Region %d\n", cases);
            printf("Water level is %.2f meters.\n", a[0] + (double)water / 100);
            printf("%.2f percent of the region is under water.\n\n", (double)0);
            continue;
        }
        for (i = 1; i<num; i++)
        {
            if ((a[i] - a[i - 1])*i * 100 + waters >= water)
            {
                printf("Region %d\n", cases);
                printf("Water level is %.2f meters.\n", high + (double)(water - waters) / i / 100);
                printf("%.2f percent of the region is under water.\n\n", (double)i / num * 100);
                break;
            }
            waters += (a[i] - a[i - 1])*i * 100;
            high = a[i];
        }
        if (i >= num)
        {
            printf("Region %d\n", cases);
            printf("Water level is %.2f meters.\n", a[num - 1] + (double)(water - waters) / num / 100);
            printf("%.2f percent of the region is under water.\n\n", (double)100);
        }
    }
    return 0;
}
3 3
25 37 45
51 12 34
94 83 -1
10000

1 1
25
10000

1 2
1 2
100

1 2
1 2
200

5 1
4 5 5 5 -3
0

1 1
25
240

5 1
4 5 5 5 6
100

5 1
4 5 5 5 6
0

5 1
3 -4 -4 -4 5
100

0 0

Region 1
Water level is 41.40 meters.
55.56 percent of the region is under water.
Region 2
Water level is 125.00 meters.
100.00 percent of the region is under water.
Region 3
Water level is 2.00 meters.
50.00 percent of the region is under water.
Region 4
Water level is 2.50 meters.
100.00 percent of the region is under water.
Region 5
Water level is -3.00 meters.
0.00 percent of the region is under water.
Region 6
Water level is 27.40 meters.
100.00 percent of the region is under water.
Region 7
Water level is 5.00 meters.
20.00 percent of the region is under water.
Region 8
Water level is 4.00 meters.
0.00 percent of the region is under water.
Region 9
Water level is -3.67 meters.
60.00 percent of the region is under water.

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-31 22:03:57

poj_1877的相关文章