E1-106.租车骑绿道(贪心)

题目描述

部门组织绿岛骑行团建活动。租用公共双人自行车,每辆自行车最多坐 两人,最大载重 M

给出部门每个人的体重,请问最多需要租用多少双人自行车。

输入描述

第一行两个数字 mn,分别代表自行车限重,部门总人数。

第二行,n 个数字,代表每个人的体重,体重都小于等于自行车限重 m

  • 0 < m ≤ 200
  • 0 < n ≤ 1000000

输出描述

最小需要的双人自行车数量。

用例1

输入

3 4
3 2 2 1

Copy

输出

3
#include 
using namespace std;

void solve() {
    int m, n;
    cin >> m >> n;
    vector 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;
}

你可能感兴趣的:(华为算法题,算法,c++,数据结构)