题意
- 给定每个点的消耗时间,查询在第t秒的时候位于哪个点
思路
- 对耗时做前缀和,查询第一个大于的位置(upper_bound)
AC代码
#include<bits/stdc++.h>
using namespace std;
long long sum[50505];
int main(){
int n,q;
scanf("%d%d",&n,&q);
for(int i=1;i<=n;i++){
long long tp;
scanf("%lld",&tp);
sum[i]=sum[i-1]+tp;
}
for(int i=0;i<q;i++){
long long qry;
scanf("%lld",&qry);
printf("%d\n",upper_bound(sum+1,sum+n+1,qry)-(sum));
}
return 0;
}