//需要n中普通原料和g ml灰色原料 //每三种不同普通原料各x ml 可以合成 x ml 灰色原料 //问最少需要集组原料 每组各原料50 ml # include <stdio.h> # include <algorithm> # include <string.h> using namespace std; int main() { int i,n,cot,g,a[15],g1,b[15]; while(~scanf("%d",&n),n) { for(i=0;i<n;i++) { scanf("%d",&a[i]); b[i]=a[i]; } scanf("%d",&g); sort(a,a+n); sort(b,b+n); if(a[n-1]%50==0)//满足普通原料的最少组数 cot=a[n-1]/50; else cot=a[n-1]/50+1; for(i=0;i<n;i++)//剩下去合成灰色原料的数量 { a[i]=cot*50-a[i]; b[i]=a[i]; } while(1) { g1=g; for(i=n-1;;) { sort(b,b+n); if(b[i]>0&&b[i-1]>0&&b[i-2]>0) { g1--; b[i]--; b[i-1]--; b[i-2]--; } else break; if(g1<=0) { break; } } if(g1<=0) { printf("%d\n",cot); break; } cot++; for(i=0;i<n;i++)//不够加一组 { a[i]+=50; b[i]=a[i]; } } } return 0; }
时间: 2024-10-25 11:59:55