#pragma warning (disable:4996) #include<stdio.h> int n, h, fi[30], di[30], ti[30] = { 0 }; struct node { int num[30]; int max; }end_node[30]; int get_max(int *fish, int left, int right) { int max = fish[left], re = left; for (int j = left + 1; j <= right; j++) { if (max < fish[j]) { max = fish[j]; re = j; } } return re; } void fishing() { for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) end_node[i].num[j] = 0; end_node[i].max = 0; } for (int i = 0; i < n; i++) { int ffi[30], t = 0, at = h * 60; for (int j = 0; j <= i; j++) { ffi[j] = fi[j]; at -= ti[j] * 5; } while (t < at) { int tmp = get_max(ffi, 0, i); end_node[i].num[tmp] += 5; end_node[i].max += ffi[tmp]; ffi[tmp] -= di[tmp]; if (ffi[tmp] < 0) ffi[tmp] = 0; t += 5; } } int ffi[30],max; for (int i = 0; i < n; i++) ffi[i] = end_node[i].max; max = get_max(ffi, 0, n); for (int i = 0; i < n; i++) { if (i != n - 1) printf("%d, ", end_node[max].num[i]); else printf("%d", end_node[max].num[i]); } printf("\nNumber of fish expected: %d\n\n", end_node[max].max); } int main(void) { while (scanf("%d", &n),n) { scanf("%d", &h); for (int i = 0; i < n; i++) scanf("%d", &fi[i]); for (int i = 0; i < n; i++) scanf("%d", &di[i]); for (int i = 1; i < n; i++) scanf("%d", &ti[i]); fishing(); } return 0; } |
Double click to view unformatted code.