(ファイルIO):入力:mnotes.in出力:mnotes.out
制限時間:1000msのスペースの制約:131072キロバイトの特定の制限
後藤ProblemSet
タイトル説明
の曲を演奏し、彼の牛を教えるために準備ができて、歌
番種の音節、
へ
、およびから従わなければなりません
へ
最初のための遊びのためであります
持続的な音節の種類
ビート、ビートから
開始からのビートので、カウント
ビートへ
最初のプレイ
から仲の音節、
へ
最初のプレイ
忠の音節など。
牛で、最近の演奏に興味を持っていない、と彼らはあまりにも退屈を感じます。だから、牛に焦点を保つために、
提案しました
形式の質問の質問は、まず」であります
時間ビート"は、どのような音節の再生を
それぞれの問題に対応します
牛を解決する助けてください。
入力
入力二つの空間の最初の行は、整数で区切られました
と
最初の
へ
行は、整数が含ま
最初の
行は、整数が含ま
出力
出力があり
ライン、質問への答えに対応する出力の各行。
サンプル入力
3. 5
2
1
3
2
3
4
0
。1
サンプル出力
2
。3
。3
。1
。1
データ範囲の制限
アイデアを解く
二分+アナログ
コード
#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);
}
}