codeforce ---- Valhalla Sitio

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;
} 
Publicados 106 artículos originales · ganado elogios 67 · vistas 5431

Supongo que te gusta

Origin blog.csdn.net/qq_45772483/article/details/104888252
Recomendado
Clasificación