贪心求灰色颜色的数量,用50N的max做限定,详细见代码。
思路: 最大的需求量决定了开始需要几套颜料。95ml需要2套。
最小的3种颜料剩余的最多,决定了是否需要再多套数。
每次计算完成需要重新排序。
#include <stdio.h>
#include <stdlib.h>
int n, a[15];
int cmp(const void *a, const void *b)
{
return *(int *)a - *(int *)b;
}
int main()
{
int result, max, grey;
while (scanf("%d", &n) != EOF) {
if (n == 0) break;
result = 0;
max = 0;
for (int i = 0; i < n; ++i)
scanf("%d", &a[i]);
scanf("%d", &grey);
qsort(a, n, sizeof(int), cmp);
while (max < a[n - 1]) {
max += 50;
result++;
}
while (1) {
while (a[2] < max && grey > 0) {
a[0]++;
a[1]++;
a[2]++;
grey--;
qsort(a, n, sizeof(int), cmp);
}
if (grey == 0) break;
result++;
max += 50;
}
printf("%d\n", result);
}
}