题意
传送门 NC 24866
题解
前缀和维护第 i i i 个 n o t e note note 的结束时间,每次查询二分答案即可。
#include <bits/stdc++.h>
using namespace std;
#define maxn 50005
int N, Q, B[maxn], sum[maxn];
int main()
{
scanf("%d%d", &N, &Q);
for (int i = 1; i <= N; i++)
{
scanf("%d", B + i);
sum[i] = sum[i - 1] + B[i];
}
while (Q--)
{
int T;
scanf("%d", &T);
int lb = -1, ub = N + 1;
while (ub - lb > 1)
{
int mid = (lb + ub) >> 1;
if (sum[mid] <= T)
lb = mid;
else
ub = mid;
}
printf("%d\n", ub);
}
return 0;
}