E1-106.租车骑绿道(贪心)
题目描述
部门组织绿岛骑行团建活动。租用公共双人自行车,每辆自行车最多坐 两人
,最大载重 M
。
给出部门每个人的体重,请问最多需要租用多少双人自行车。
输入描述
第一行两个数字 m
、n
,分别代表自行车限重,部门总人数。
第二行,n
个数字,代表每个人的体重,体重都小于等于自行车限重 m
。
- 0 < m ≤ 200
- 0 < n ≤ 1000000
输出描述
最小需要的双人自行车数量。
用例1
输入
3 4
3 2 2 1
Copy
输出
3
#include <bits/stdc++.h>
using namespace std;
void solve() {
int m, n;
cin >> m >> n;
vector<int> a(n);
for(int i = 0; i < n; i++) {
cin >> a[i];
}
sort(a.begin(), a.end());
int l = 0, r = n - 1;
int res = 0;
while (l <= r) {
if (a[l] + a[r] <= m) {
l++;
r--;
} else {
r--;
}
res++;
}
cout << res << endl;
}
int main() {
solve();
return 0;
}