close

題目大意:  輸入id, 跟體力值,算說可以搬棺材多久。棺材一定要6人一起搬。

思路:  只需紀錄體力值,直接模擬,每次把體力最小淘汰,人數不夠的時候,補充。

代碼:  

#include <bits/stdc++.h>

using namespace std;

int main()
{
    int n;
    cin >> n;
    vector<int> arr;
    for(int i = 0; i < n; ++i){
        int id, san;
        cin >> id >> san;
        arr.push_back(san);
    }
    sort(arr.begin(), arr.end());

    vector<int> gg;
    for(int i = 0; i < 6; ++i){
        gg.push_back(arr.back());
        arr.pop_back();
    }

    int sum = 0;
    while(gg.size() == 6){
        int bye = gg.back(); gg.pop_back();
        sum += bye*5;
        vector<int> next_gg;
        
        for(int i = 0; i < gg.size(); ++i){
            gg[i] -= bye;
            if(gg[i]) next_gg.push_back(gg[i]);
        }

        while(next_gg.size() < 6){
            if(arr.empty()) break;
            next_gg.push_back(arr.back()); arr.pop_back();
        }
        
        sort(next_gg.rbegin(), next_gg.rend());
        gg = next_gg;
    }
    cout << sum << "\n";
    return 0;
}

arrow
arrow

    尾玉 發表在 痞客邦 留言(0) 人氣()