範例程式碼 uva815

//uva815
#include <algorithm>
#include <climits>
#include <cmath>
#include <iomanip>
#include <iostream>
#include <vector>

using namespace std;

int main() {
    int m = 0, n = 0, R = 0;

    while (cin >> m >> n && m && n) {
        int w = 0, h_sum = 0, out_index = 0;
        vector<int> block;

        // Input
        for (int i = 0; i < m * n; i++) {
            int e;
            cin >> e;
            block.push_back(e);
        }
        block.push_back(INT_MAX / 100 / m / n);
        cin >> w;

        // Process
        sort(block.begin(), block.end());

        int remain_w = w;
        for (int i = 1; i <= m * n; i++) {
            int diff = 0;
            if (block[i] != block[i - 1]) {
                diff = block[i] - block[i - 1];
                if (remain_w > diff * 100 * i) {
                    remain_w -= diff * 100 * i;
                } else {
                    out_index = i;
                    h_sum += block[i - 1];
                    break;
                }
            }
            h_sum += block[i - 1];
        }

        // Output
        cout << fixed << setprecision(2);
        cout << "Region " << ++R << endl;
        cout << "Water level is " << 0.01 * (w + 100 * h_sum) / out_index
             << " meters." << endl;
        cout << 100.0 * out_index / m / n
             << " percent of the region is under water." << endl
             << endl;
    }
    return 0;
}