Ivar el sin hueso es un gran líder. Él está tratando de capturar el Kattegat de Ladgerda. La guerra ha comenzado y ola tras ola de guerreros Ivar están cayendo en battle.Ivar tiene nn
guerreros, que los coloca en una línea recta delante de la puerta principal, de manera que la ii
guerrero-ésima significa después de la derecha (i-1) (i-1)
guerrero-ésima. El primero conduce guerrero atacante attack.Each pueden tardar hasta aiai
flechas antes de que caiga al suelo, donde aiai
es la ii
strength.Lagertha órdenes de guerreros -ésimo sus guerreros para disparar kiki
flechas durante el ii
-ésimo minutos, las flechas de uno en uno golpeó el guerrero primero aún en pie. Después de todo guerreros de Ivar caen y todas las flechas que vuelan actualmente pasan volando, Thor rompe el martillo y los guerreros de Ivar todas sus fuerzas llegar anteriores hacia atrás y ponerse de pie para luchar de nuevo. En otras palabras, si todos los guerreros mueren en minutos tt
, Todos ellos estarán de pie para luchar al final del tt minutos
.La batalla tendrá una duración de qq
minutos, después de cada minuto que debe reportar a Ivar ¿cuál es el número de su pie warriors.InputThe primera línea contiene dos números enteros nn
y QQ
(1≤n, q≤2000001≤n, q≤200000
) - el número de guerreros y el número de minutos en la segunda línea battle.The contiene nn
enteros a1, a2, ..., ana1, a2, ..., an
(1≤ai≤1091≤ai≤109
) Que representan strengths.The tercera línea del guerrero contiene qq
enteros K1, K2, ..., kqk1, k2, ..., kq
(1≤ki≤10141≤ki≤1014
), La ii
-ésimo de ellos representa el orden de Ladgerda en la ii
-ésimo minutos: kiki
flechas atacarán a los guerreros.
OutputOutput líneas QQ, la ii-ésimo de ellos es el número de guerreros de pie después de que los minute.Examples ii-th
Entrada
5 5
1 2 1 2 1
3 10 1
Salida
3
5
4
4
de entrada
4 4
1 2 3 4
9 1 10 6
de salida
1
4
4
1
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
const int N = 2e5 + 10;
typedef long long LL;
LL a[N], k[N], sum[N], dam;
int main(){
int n, q;
cin >> n >> q;
for (int i = 1; i <= n; i ++){
cin >> a[i];
sum[i] = sum[i - 1] + a[i];
}
for (int i = 1; i <= q; i ++) scanf("%lld", &k[i]);
for (int i = 1; i <= q; i ++){
dam += k[i];
if (dam >= sum[n]){
dam = 0;
cout << n << endl;
}
else printf("%d\n",n - (int)(upper_bound(sum + 1, sum + 1 + n, dam) - sum - 1 ));
}
return 0;
}