題目連結: https://zerojudge.tw/ShowProblem?problemid=d900
# 解題思路
運用 priority_queue
將數據不斷的排序好,使最小的數值排在第一個,代表下一個完成接水的水龍頭所用的使用的總時間時間,
每次都取最小的數值做相加之後再推入,在過程中找最大值即可~~
# 程式碼
#include <bits/stdc++.h> | |
using namespace std; | |
int main() | |
{ | |
int n,m,ans=0; cin>>n>>m; | |
priority_queue<int,vector<int>,greater<int> > pq; | |
for(int i=0;i<m;i++) pq.push(0); | |
for(int i=0,wi;i<n&&cin>>wi;i++) | |
{ | |
wi+=pq.top();pq.pop(); | |
ans=max(wi,ans); | |
pq.push(wi); | |
} | |
cout<<ans<<"\n"; | |
return 0; | |
} |