Friday, May 15, 2015

UVa 11109 - Rinse

// UVa 11109 - Rinse

#include <iostream>
#include <stdio.h>
using namespace std;

int main() {
	int k;
	while (true) {
		cin >> k;
		if (k == 0)
			break;
		double rain, w, l, cap;

		cin >> rain >> w >> l >> cap;
		double r, r0;

		if (k == 1) {
			r0 = min(cap - w, rain);
		} else {

			if (w <= l) {
				r0 = min(l - w, rain);
				rain -= r0;
				r = rain / k;
				r0 += r;
			} else if (l < w) {
				double rneed = min((w - l) * (k - 1), rain);
				rain -= rneed;
				r = rneed / (k - 1) + rain / k;
				r0 = rain / k;
			}
			if (r + l > cap)
				r = cap - l;
			if (r0 + w > cap)
				r0 = cap - w;
		}

		printf("%d", k);
		if (k > 0) {
			printf(" %.2f", r0);
			for (int i = 1; i < k; i++)
				printf(" %.2f", r);
		}
		printf("\n");
	}

	return 0;
}

No comments:

Post a Comment