http://acm.pku.edu.cn/JudgeOnline/problem?id=1042
Код:
#include<iostream> using namespace std; int main() { int i,j,k,g,n,h,ans,tot,tt=0,f[32],d[32],t[32],now[32],tnow[32],times[32]; while (scanf("%d",&n),n) { if (tt++) printf("\n"); scanf("%d",&h); h*=12; for (i=0;i<n;++i) { scanf("%d",&f[i]); now[i]=f[i]; } for (i=0;i<n;++i) scanf("%d",&d[i]); for (i=0;i<n-1;++i) scanf("%d",&t[i]); memset(times,0,sizeof(times)); for (ans=i=0;i<n&&h>0;++i) { for (j=0;j<i;++j) now[j]=f[j]; memset(tnow,0,sizeof(tnow)); for (tot=k=0;k<h;++k) { for (g=0,j=1;j<=i;++j) if (now[j]>now[g]) g=j; tot+=now[g]; now[g]-=d[g]; if (now[g]<0) now[g]=0; ++tnow[g]; } if (tot>ans) { ans=tot; for (j=0;j<n;++j) times[j]=tnow[j]; } else if (tot==ans) { for (j=0;j<n;++j) if (tnow[j]!=times[j]) break; if (j<n&&tnow[j]>times[j]) for (g=j;g<n;++g) times[g]=tnow[g]; } h-=t[i]; } for (i=0;i<n-1;++i) printf("%d, ",times[i]*5); printf("%d\nNumber of fish expected: %d\n",times[n-1]*5,ans); } return 0; }