牛客周赛93D题 - 贪心+堆

#include <iostream>
#include <vector>
#include <queue>
#define fi first
#define se second
#define endl '\n'

using namespace std;
using ll = long long;
using pii = pair<int, int>;

void solve() {
	int n, k; cin >> n >> k;
	vector<pii> a(n); cin >> a[0].fi;
	vector<bool> f(n);
	priority_queue<pii> q;
	ll ans = a[0].fi;
	
	for(int i = 1; i < n; i++) {
		cin >> a[i].fi;
		a[i].se = i;
		q.push(a[i]);
	}
	while(k--) {
		pii t = q.top();
		q.pop();
		ans += t.fi;
		f[t.se] = true;
	}
	
	cout << ans << " ";
	for(int i = 1; i < n; i++) {
		if(!f[a[i].se]) cout << a[i].fi << " ";
	}
	cout << endl;
}

int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	
	int T; cin >> T;
	while(T--) {
		solve();
	}
	
	return 0;
}

全部评论
牛客周赛93D题
点赞 回复 分享
发布于 05-21 12:05 浙江

相关推荐

05-01 22:41
中南大学 Java
点赞 评论 收藏
分享
04-15 23:42
中山大学 Java
ResourceUtilization:过几天楼主就会捧着一堆offer来问牛友们该怎么选辣
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务