[ABC334D] Reindeer and Sleigh

 题目链接:[ABC334D] Reindeer and Sleigh - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

题意翻译

有 N 个雪橇,其中第 i 个雪橇需要 Ri​ 匹驯鹿来拉。每匹驯鹿最多拉一个雪橇。现有 Q 次询问,每次询问给你 X ,问你如果有 X 匹驯鹿,最多能拉多少个雪橇?

第一行输入 N,Q,第二行输入 Ri​,接下来每行输入一个询问。

输入输出样例

输入

4 3
5 3 11 8
16
7
1000

输出 #1复制

3
1
4

输入 

6 6
1 2 3 4 5 6
1
2
3
4
5
6

输出

1
1
2
2
2
3

输入 

2 2
1000000000 1000000000
200000000000000
1

输出 

2
0

AC代码:

#include
#include

using namespace std;

const int N = 2e5 + 10;
long long a[N],s[N];

int main()
{
	long long n,q;
	cin >> n >> q;
	for(int i=1;i<=n;i++) cin >> a[i];
	sort(a+1,a+n+1);
	for(int i=1;i<=n;i++) s[i] = s[i-1] + a[i];
	long long ans = 0;
	long long x = 0;
	while(q--)
	{
		scanf("%lld",&x);
		long long l = 1,r = n;
		while(l < r)
		{
			long long mid = l + r + 1 >> 1;
			if(s[mid] <= x) l = mid;
			else r = mid - 1;
		}
		if(s[l] <= x) cout << l << endl;
		else cout << 0 << endl;
	}
	return 0;
} 

你可能感兴趣的:(题解,算法,c++)