提交时间:2023-04-23 22:24:51

运行 ID: 15549

#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> #include<queue> using namespace std; int n,h,time1[101],t=0,ans=0,sum,temp; struct lake { int num; int lose; bool operator < (const lake &a) const { return num<a.num; } }l[101]; int main() { priority_queue<lake>q; cin>>n>>h; h=h*60/5; for(int i=1;i<=n;i++) cin>>l[i].num; for(int i=1;i<=n;i++) cin>>l[i].lose; time1[0]=0; time1[1]=0; for(int i=1;i<=n-1;i++) cin>>time1[i+1]; for(int i=1;i<=n;i++) { t=0; temp=h; sum=0; for(int j=1;j<=i;j++) t+=time1[j]; temp-=t; for(int j=1;j<=i;j++) q.push(l[j]); while(temp) { lake l1=q.top(); q.pop(); if(l1.num<=0)break; sum+=l1.num; l1.num-=l1.lose; q.push(l1); temp--; } while(!q.empty()) q.pop(); if(sum>ans)ans=sum; } cout<<ans<<endl; return 0; }