/* Name: poj 2709 Painter Author: UnimenSun Date: 15/05/2011 14:20 Description: 贪心祼题 */ /* 解题报告:贪心祼题 1、先处理非gray颜料,从需要量最大的处理,这样才能是最优的 2、处理gray颜料,处理时从最小的三个当中,选最大的处理,每处理完一次,重新排下序,以保证是最小的三个(由于 n的值非常小,所以这样做是可以的) */ #include <iostream> #include <algorithm> using namespace std; int n, an[12], gray; int ans, nMax; int main() { int i; while(cin>>n && n) { //输入 for(i=0; i<n; ++i) cin>>an[i]; cin>>gray; //排序 sort(an, an+n); ans = 0; nMax = 0; //先处理非gray的颜料,从最大的开始处理只要最大的满足了就可以,且结果是最优的 while(nMax < an[n-1]) { ans++; nMax += 50; } //处理gray的颜料 while(1) { while(an[2]<nMax && gray>0) { an[2]++; an[1]++; an[0]++; gray--; sort(an, an+n); } if(0 == gray) break; nMax += 50; ans++; } cout<<ans<<endl; } return 0; }