题目链接
链接: 餐厅
题目描述
解题思路
前缀和加二分
代码实现
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long LL;
const int N=200010;
LL sum[N],num;
LL a[N],k[N];
int main()
{
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
int n,q;
cin>>n>>q;
for(int i=1;i<=n;i++) cin>>a[i],sum[i]=sum[i-1]+a[i];
for(int i=1;i<=q;i++)
{
cin>>k[i];
num+=k[i];
if(num>=sum[n])
{
num=0;
}
int l=0,r=n;
while(l<r)
{
int mid=(l+r+1)>>1;
if(sum[mid]>num)r=mid-1;
else l=mid;
}
cout<<n-l<<endl;
}
return 0;
}