小爱可以玩两个游戏,每个游戏各有 n 关,每过一关升一级,每关的通关时间是不同的。给定一个整数 t,表示小爱玩游戏的时间,请问她应该如何分配时间,才能让升级的次数达到最大,也就是两个游戏的最大通关之和?
#include <bits/stdc++.h>
using namespace std;
int n,t,a[100005], b[100005],ans=0;
int main()
{
cin>>n>>t;
for(int i=1;i<=n;i++)
{
cin>>a[i];
a[i]+=a[i-1];
}
for (int i=1;i<=n;i++)
{
cin>>b[i];
b[i]+=b[i-1];
}
int s;
int p=n;
for (int i=0;i<=n;i++)
{
s=t-a[i];
if (s<0)
break;
while (b[p]>s) {
p--;
}
ans = max(ans,i+p);
}
cout<<ans;
return 0;
}