(Archivo IO): Entrada: mnotes.in de salida: mnotes.out
límite de tiempo: 1000 ms limitaciones de espacio: las restricciones específicas 131072 KB
Goto Boletín de problemas
título Descripción
listo para enseñar a sus vacas reproducir una canción, la canción
especies sílabas, numeradas
a
, y debe seguir desde
a
es el orden de juego para la primera
tipo de sílabas sostenidas
late, late desde
empieza a contar, por lo que batir a partir de
a batir
juego de la primera
Zhong sílaba, desde
para
juego de la primera
Zhong sílaba, y así sucesivamente.
Las vacas no está interesado en jugar para los recientemente, y se sienten demasiado aburrido. Así que con el fin de mantener la atención en las vacas,
propuso
preguntas, preguntas de formato es "primero
veces mejor que jugar qué tipo de sílabas ",
cada uno correspondiente a un problema
Por favor, ayuda a resolver las vacas.
Input
primera línea de entrada dos espacios separados por un número entero
y
primera
a
líneas contiene un número entero
el primer
líneas contiene un número entero
Salida
La salida tiene
líneas, cada línea de salida correspondiente a la respuesta a la pregunta.
entrada de la muestra
. 3. 5
2
. 1
. 3
2
. 3
. 4
0
. 1
Salida de muestra
2
. 3
. 3
. 1
. 1
límite de rango de datos
La solución de las ideas
bipartita + analógico
código
#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
#include<algorithm>
#include<iomanip>
#include<cmath>
using namespace std;
int n,q,a[50010],x,l,r,mid;
bool flag;
int main(){
freopen("mnotes.in","r",stdin);
freopen("mnotes.out","w",stdout);
scanf("%d%d",&n,&q);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
a[i]+=a[i-1];
}
for(int i=1;i<=q;i++)
{
scanf("%d",&x);
++x;
l=1;r=n;
flag=0;
while(l<r)
{
mid=(l+r)/2;
if(a[mid]>x)
r=mid;
if(a[mid]<x)
l=mid+1;
if(a[mid]==x)
{
printf("%d\n",mid);
flag=1;
break;
}
}
if(!flag)
printf("%d\n",l);
}
}