思路:
- 我们只需预处理出前缀,对每个 a a a 的前缀 a i a_i ai ,从 b b b 的前缀中二分出大于 k − a i k - a_i k−ai 的下标,每次更新一下答案即可
AC代码如下:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
ll n,m,k,ans=0;
cin>>n>>m>>k;
ll a[n+1]={0},b[m+1]={0};
for(ll i=1;i<=n;i++) cin>>a[i],a[i]+=a[i-1];
for(ll i=1;i<=m;i++) cin>>b[i],b[i]+=b[i-1];
for(ll i=0;i<=n;i++) if(k>=a[i]) ans=max(ans,upper_bound(b+1,b+1+m,k-a[i])-b-1+i);
cout<<ans;
}