餐厅

题目 餐厅

image-a62eda3f

思路分析

image-576ca0f8

代码实现

#include<bits/stdc++.h>
using namespace std;
#define endl '\n'

typedef long long LL;
const int N=2e5+10;
LL s[N];
int n,q;

int find(LL sum){
    int l=0,r=n;
    while(l<r){
        int m=l+r+1>>1;
        if(s[m]<=sum)   l=m;
        else    r=m-1;
    }
    return n-r;
}

int main()
{
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    cin>>n>>q;
    for(int i=1;i<=n;i++){
        int x;cin>>x;
        s[i]=s[i-1]+x;
    }
    LL sum=0;
    while(q--){
        LL x;cin>>x;
        sum+=x;
        if(sum>=s[n])   sum=0;
        cout<<find(sum)<<endl;
    }
    return 0;
}

同类题型

视频讲解


⬅️ 赶牛入圈 🏠 00-刷题理模型 ➡️ 前缀和与差分相关模型