作者:
描述
有 m 个出水速度相同的水龙头,有 n 个人想要接水,他们所需时间分别为 t 1 ,t 2 ,...,t n 。问:这 n 个人全部接水完毕的最早时间?
输入描述
第 1 行,两个整数 n,m 第 2 行,n 个整数 t 1 ,t 2 ,...,t n
【测试数据范围】1≤n≤10 5 ,1≤m,t i ≤10 3
输出描述
输出一行一个整数
用例输入 1
6 10
5 7 9 2 8 3
用例输出 1
9
用例输入 2
5 3
9 2 7 4 6
用例输出 2
10
代码如下
#include<bits/stdc++.h>
using namespace std;
int n,m,t[100001],maxx=0,s=0;
priority_queue<int> q;
int main(){
cin>>n>>m;
for(int i=1;i<=n;++i) {
cin>>t[i];
maxx=max(maxx,t[i]);
}
if(n<=m) cout<<maxx;
else {
for(int i=1;i<=n;++i) q.push(-t[i]);
for(int i=1;i<=m;++i) {
s-=q.top();
q.pop();
q.push(s-t[i]);
}
while(!q.empty()) {
s-=q.top();
q.pop();
}
cout<<s;
}
return 0;
}
只A了两个