/////////////////////////////////////////////////////////////////
//1161 多湖钓鱼 枚举+贪心 也是POJ 1042
//其一,John在路上花费的时间只与最终到达最远的湖有关;其二,只需考虑在不同的湖停留的时间,不要考虑先后。
//所以可以对于最终到达第1到第25个湖这n种情况,先扣除路上时间,在剩下的时间不断用贪心挑可钓鱼数最大的湖选择就行
//搞了很久都不知道为什么超时,疯了。。。
#include<stdio.h>
#include<string.h>
int main()
{
int fi[30]; int di[30]; int ti[30];
int fishleft[30]; int tempLakeTime[30]; int resLakeTime[30];
int sumFish;
int testcase,lakeNum,fishingTime;
int i,beforeMark,leftTime;
int tempSum;
int currentMaxLoc;
int currentMaxVal;
int sum;
int time;
scanf("%d", &testcase);
while(testcase--)
{
scanf("%d",&lakeNum);
while( !(lakeNum==0))
{
scanf("%d",&fishingTime);
fishingTime*=12;
for(i=0;i<lakeNum;i++)
{
scanf("%d",&fi[i]);
fishleft[i]=fi[i];
}
for(i=0;i<lakeNum;i++)
scanf("%d",&di[i]);
for(i=1;i<lakeNum;i++)
scanf("%d",&ti[i]);
ti[0]=0;
memset(resLakeTime,0,sizeof(resLakeTime));
sumFish=0; leftTime=fishingTime;
for(beforeMark=1;beforeMark<=lakeNum;beforeMark++)
{
memset(tempLakeTime,0,sizeof(tempLakeTime));
leftTime-=ti[beforeMark-1];
sum=0;
time=leftTime;
while(time--)
{
currentMaxLoc=0;
currentMaxVal=0;
for(i=0;i<beforeMark;i++)
if(currentMaxVal<fishleft[i])
{
currentMaxVal=fishleft[i];
currentMaxLoc=i;
}
sum+=currentMaxVal;
fishleft[currentMaxLoc]-=di[currentMaxLoc];
tempLakeTime[currentMaxLoc]++;
}
for(i=0;i<beforeMark;i++)
fishleft[i]=fi[i];
tempSum=sum;
if(sumFish<tempSum)
{
for(i=0;i<beforeMark;i++)
resLakeTime[i]=tempLakeTime[i];
sumFish=tempSum;
}
}
for(i=0;i<lakeNum;i++)
{
printf("%d",resLakeTime[i]*5);
if(i!=lakeNum-1)
printf(", ");
}
printf("\nNumber of fish expected: %d\n",sumFish);
scanf("%d",&lakeNum);
if(lakeNum!=0)
printf("\n");
}
if(testcase>0)
printf("\n");
}
return 0;
}
// tempSum=LakeResult(beforeMark,leftTime);
/*
int LakeResult(int n,int time)
{
int i,currentMaxLoc;
int currentMaxVal;
int sum=0;
while(time--)
{
currentMaxLoc=0;
currentMaxVal=0;
for(i=0;i<n;i++)
if(currentMaxVal<fishleft[i])
{
currentMaxVal=fishleft[i];
currentMaxLoc=i;
}
sum+=currentMaxVal;
fishleft[currentMaxLoc]-=di[currentMaxLoc];
tempLakeTime[currentMaxLoc]++;
}
for(i=0;i<n;i++)
fishleft[i]=fi[i];
return sum;
}
*/