POJ1252-Euro Efficiency
http://poj.org/problem?id=1252
#include<cstdio> #include<algorithm> using namespace std; const int INF=20000000; const int MAXV=100*100+100+1; int f[MAXV],a[6],t,i,j,maxV,tot,_max; float ave; int main(void) { scanf("%d",&t); while(t--) { for(i=0;i<6;i++) scanf("%d",&a[i]); maxV=a[5]*100+100; for(i=0;i<=maxV;i++) f[i]=INF; f[0]=0; for(i=0;i<6;i++) for(j=a[i];j<=maxV;j++) f[j]=min(f[j],f[j-a[i]]+1); for(i=0;i<6;i++) for(j=maxV-a[i];j>=0;j--) f[j]=min(f[j],f[j+a[i]]+1); tot=_max = f[1]; for(i=2;i<=100;i++) if(f[i]!=INF) { tot+=f[i]; _max=max(_max,f[i]); } float ave=tot/100.0; printf("%.2f %d\n",ave,_max); } return 0; }