AcWing 5385. 餐厅
原题链接
中等
作者:
Y_0909
,
2024-01-13 23:23:48
,
所有人可见
,
阅读 37
#include <iostream>
using namespace std;
typedef long long LL;
const int N = 200010;
int n,q;
LL a[N] , k[N] , s[N];
LL sum;
LL check(LL sum){
int l = 0, r = n;
while(l < r){
int mid = (l + r) / 2;
if(s[mid] <= sum) r = mid;
else l = mid + 1;
}
return l;
}
int main(){
cin >> n >> q;
for(int i = 1 ; i <= n ; i ++ ) cin >> a[i] , sum += a[i];
for(int i = 1 ; i <= q ; i ++ ) cin >> k[i];
LL sum2 = sum;
for(int i = 0 , j = n; i <= n ; i ++, j -- ) s[i] = sum , sum -= a[j];
LL sum1 = 0;
for(int i = 1 ; i <= q ; i ++ )
{
sum1 += k[i];
if(sum1 >= sum2) sum1 = 0;
printf("%ld\n" , check(sum1));
}
return 0;
}