算法1
前缀和+二分查找
C++ 代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define db double
const int N=2e5+10;
int a[N],s[N];
void solve()
{
int n,q;
cin>>n>>q;
for(int i=1;i<=n;i++) cin>>a[i],s[i]=s[i-1]+a[i];
int x,sum=0;
while(q--)
{
cin>>x;
sum+=x;
int l=0,r=n;
while(l<r)
{
int mid=l+r+1>>1;
if(sum>=s[mid]) l=mid;
else r=mid-1;
//cout<<" $ "<<sum<<" "<<l<<" "<<r<<endl;
}
if(l==n)
{
sum=0;
cout<<n<<endl;
//cout<<"# "<<sum<<" "<<l<<endl;
}
else
{
cout<<n-l<<endl;
//cout<<" "<<sum<<" "<<l<<endl;
}
}
}
signed main()
{
int t=1;
//cin>>t;
while(t--) solve();
}
大佬太强了,膜拜膜拜