#include<iostream>
#include<cstdio>
#include<queue>
using namespace std;
struct node
{
int ti,num,re;
};
node p[50];
bool operator <(const node& a,const node& b){
return a.num<b.num;
}
priority_queue<node> q;
int cal(int c,int ti)
{
int ans=0;
for(int i=1;i<=c;i++)
q.push(p[i]);
for(int i=1;i<=ti;i++)
{
node n=q.top();
ans+=n.num;
q.pop();
n.num-=n.re;
if(n.num<0)
n.num=0;
q.push(n);
}
return ans;
}
int main()
{
int m,n;
scanf("%d%d",&m,&n);
n*=12;
for(int i=1;i<=m;i++)
scanf("%d",&p[i].num);
for(int i=1;i<=m;i++)
scanf("%d",&p[i].re);
for(int i=1;i<m;i++)
scanf("%d",&p[i].ti);
int tot=0;
int ans=-1;
for(int i=0;i<m;i++)
{
tot+=p[i].ti;
if(tot<=n)
{
ans=max(ans,cal(i+1,n-tot));
}
}
printf("%d",ans);
return 0;
}
1431:钓鱼
最新推荐文章于 2022-02-15 22:54:39 发布