題目大意: 輸入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;
}
留言列表