题目链接:[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<iostream>
#include<algorithm>
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;
}