#HX1256C. 多序列求和

提交0 通过0
通过率0%
时间限制1000ms
内存限制128MiB
    ID: 10084 传统题 1000ms 128MiB 尝试: 0 已通过: 0 难度: 普及 上传者: 标签>编程题C++CSPCSP复赛CSP复赛专项练习暑假CSP复赛集训暑假集训1256-OI赛制模拟考上下

题目描述

题目描述

给出n个数a1a_{1},a2a_{2},⋯,ana_n,和一个空的数列b。对于i=1i=1∼n,进行以下操作:

  • 将1,2,3,⋯,aia_i按从小到大的顺序依次添加到b的尾部。

所有操作完成后,你需要回答Q个询问,每个询问包含1个正整数s,你要输出满足以下条件的最小正整数m的值:i=1mbiS\sum_{i=1}^{m}b_i\ge S

如果没有满足条件的m,输出−1。

输入格式

第1行,2个正整数n,Q

第2行,n个正整数a1a_{1},a2a_{2},⋯,ana_n

第3∼Q+2行,每行1个整数,表示一个询问

前50%数据:1Q1001\le Q\le 100

前70%数据:所有aia_i的总和不超过10510^{5}

100%数据:

1n1051\le n\le 10^{5}1Q1051\le Q\le 10^{5}

1ai1061\le a_i\le 10^{6}1S10181\le S\le 10^{18}

输出格式

输出Q行,对每个询问,用一行输出答案。

样例输入

4 3
1 2 3 4
4
10
25

样例输出

3
6
-1

提示

第一次操作a1=1a_{1}=1,数列b=[1]b=[1];第二次操作a2=2a_{2}=2,数列b=[1,1,2]b=[1,1,2];第三次操作a3=3a_{3}=3,数列b=[1,1,2,1,2,3]b=[1,1,2,1,2,3];第四次操作a4=4a_{4}=4,数列b=[1,1,2,1,2,3,1,2,3,4]b=[1,1,2,1,2,3,1,2,3,4]

对第1个询问S=3S=3:前3个数1+1+2=4S1+1+2=4\ge S,所以m=3m=3是满足条件的最小值。

对第2个询问S=10S=10:前6个数1+1+2+1+2+3=10S1+1+2+1+2+3=10\ge S,所以m=6m=6是满足条件的最小值。

对第3个询问S=25S=25:b数列所有数总和20<S20\lt S,所以没有满足条件的m。

1 1
1
1
1
1 1  
1  
1
1
5 3
1000000 1000000 1000000 1000000 1000000
0
100000000000
200000000000
1
447214
632456