C3-Zexal的浩瀚星辰
题目描述
新的火箭发射计划不要求按照最初的发射计划顺序,唯一的要求是每个火箭都不能早于原定时间发射。请你帮忙计算一下最小的损失吧。
注意:时间均以小时为最小单位。由于条件有限,一次只能发射一枚火箭。
输入
输入包含多组数据。
每组数据第一行为正整数
接下来是
输出
对于每组数据,输出一行,为最小的损失费用。
输入样例
1 2 10 2 1 10 100
输出样例
20 20
代码
#include#include #include using namespace std; struct gun { int l,p; } s[500005]; bool operator<( gun x, gun y) { if(x.p==y.p) return x.l<y.l; return x.p < y.p; } priority_queue Q; int main() { int n,k; while(cin>>n>>k) { long long ans = 0; for(int i = 0; i < n; i++) { cin>>s[i].p; s[i].l = i; } for(int i = 0; i < k; i++) Q.push(s[i]); for(int i = k; i < k+n; i++) { if(i < n) Q.push(s[i]); gun t = Q.top(); ans += (long long )(i - t.l) * t.p; Q.pop(); } cout << ans <<endl; } return 0; }