好奇怪的标题啊。。。
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e4;
int n,h,m,f[N],d[N],t[N],t1,mx;
struct node
{
int fish,lake;
} heap[N];
void maintain(int i,int k)
{
node a=heap[i];
int next=i*2;
while(next<=k)
{
if(next<k&&heap[next].fish<heap[next+1].fish)
next++;
if(a.fish<heap[next].fish)
{
heap[i]=heap[next];
i=next;
next*=2;
}
else
break;
}
heap[i]=a;
}
signed main()
{
cin>>n>>h;
m=h*60;
for(int i=1; i<=n; i++)
cin>>f[i];
for(int i=1; i<=n; i++)
cin>>d[i];
for(int i=1; i<n; i++)
cin>>t[i],t[i]*=5;
for(int k=1; k<=n; k++)
{
int time=m-t1,ans=0;
for(int i=1; i<=k; i++)
{
heap[i].fish=f[i];
heap[i].lake=i;
}
for(int i=1; i<=k/2; i++)
maintain(i,k);
while(time>=5&&heap[1].fish>0)
{
ans+=heap[1].fish;
heap[1].fish-=d[heap[1].lake];
maintain(1,k);
time-=5;
}
mx=max(mx,ans);
t1+=t[k];
}
cout<<mx;
return 0;
}