(Fichier IO): entrée: mnotes.in sortie: mnotes.out
limite de temps: 1000 ms contraintes d'espace: 131072 KB restrictions spécifiques
Aller ProblemSet
Titre description
prêt à enseigner ses vachesjouant une chanson, la chanson
syllabes espèces, numérotées
à
, et doit suivre de
à
est l'ordre de jeu pour la première
sorte de syllabes soutenues
battements, battements de
commencecompter,sortebattement de
à battre
jeu de la première
syllabe Zhong, à partir de
à
jeu de la première
syllabe Zhong, et ainsisuite.
Les vaches ne sont pas intéressés à jouer pour récemment, et ilssentent trop ennuyeux. Ainsi, afin de maintenir l'accent sur les vaches,
proposé
des questions,questions de format est « premier
fois beats jouer ce genre de syllabes, "
correspondant chacun à un problème
S'il vous plaît aider à résoudre les vaches.
Entrée
première ligne d'entrée deux espaces séparés par un nombre entier
et
premier
à
lignes contient un nombre entier
la première
lignes contient un nombre entier
Sortie
Sortie a
lignes, chaque ligne de sortie correspondant à la réponse à la question.
entrée d' échantillon
. 3. 5
2
. 1
. 3
2
. 3
. 4
0
. 1
Exemple de sortie
2
. 3
. 3
. 1
. 1
Limite de la plage de données
idées de solutions
bipartites + analogique
code
#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);
}
}