//我的做法和上面那位大佬一样都是先用了提取前n个音符总拍数的数组,做了数据预处理

#include <stdio.h>
#include <stdlib.h>

//提前声明一下函数search
int search(int *p, int p_size, int k);

int main() {
    //读入数据
    int n,q;
    scanf("%d %d\n",&n,&q);
    int *b = (int *)malloc(sizeof(int) * n);
    int *t = (int *)malloc(sizeof(int) * q);
    if(b == NULL || t == NULL){
        printf("Failed Malloc!\n");
        return -1;
    }
    for(int i = 0; i < n; i ++){
        scanf("%d",b + i);
    }
    for(int i = 0; i < q; i ++){
        scanf("%d",t + i);
    }
    //perfix_sum数组记录前i个音符的总拍数
    int *perfix_sum = (int *)malloc(sizeof(int) * (n + 1));
    if(perfix_sum == NULL){
        printf("Failed malloc!\n");
        return -1;
    }
    //前0个音符一共有0拍
    perfix_sum[0] = 0;
    for(int i = 1; i < n + 1; i ++){
        perfix_sum[i] = perfix_sum[i - 1] + b[i - 1];
    }
    
    //对q个输入的时刻进行处理
    for(int i = 0; i < q; i ++){
        int num = search(perfix_sum, n + 1, t[i]);
        printf("%d\n", num);
    }
    
    //释放空间
    free(b);
    free(t);
    free(perfix_sum);
    return 0;
}


//要找第t时刻在弹奏第几个音符,只需要找到第一个大于t的perfix_sum[i]即可,i即为所求的音符序号
//定义在排序好的数组中找到第一个大于键值的位置的函数

int search(int *p, int p_size, int k){
    for(int i = 0; i < p_size; i ++){
        if(p[i] > k){
            return i;
        }
    }
    return -1;
}