n个任务每个任务里有k个子任务,每个子任务完成需要a[i]个时间,完成一个子任务积一分,完成大任务多积一分。
总时间为m,求最大积分数。枚举判断即可
#include<cstdio>
#include<algorithm>
using namespace std;
int a[50];
int main(){
int n,k,m;
while(~scanf("%d%d%d",&n,&k,&m)){
int sum=0;
for(int i=0;i<k;i++){
scanf("%d",&a[i]);
sum+=a[i];
}
sort(a,a+k);
int ans=0,res;
for(int i=0;i<=n;i++){
res=i*sum;
if(res>m) break;
int tmp=res;
int score=i*(k+1);
for(int j=0;j<k;j++){
for(int t=i+1;t<=n;t++){
tmp+=a[j];
score++;
if(tmp>m){
score--;
j=k;
break;
}
}
}
ans=max(ans,score);
}
printf("%d\n",ans);
}
return 0;
}