KMIN - KMIN

Tác giả: khuc_tuan

Ngôn ngữ: C++

#include <iostream>
#include <queue>
#include <cstdio>

using namespace std;

int a[50050], b[50050];
int m, n, k;

struct cmp {
	bool operator()(pair<int,int> p1, pair<int,int>	p2) {
		return a[p1.first]+b[p1.second] > a[p2.first]+b[p2.second];
	}
};

priority_queue<pair<int,int>, vector<pair<int,int> >, cmp > q;

int main() {
	scanf("%d%d%d", &m, &n, &k);
	for(int i=0;i<m;++i) scanf("%d", a+i);
	for(int i=0;i<n;++i) scanf("%d", b+i);
	sort( a, a+m);
	sort( b, b+n);
	for(int i=0;i<m;++i) q.push( make_pair( i, 0) );
	for(int kk=0;kk<k;++kk) {
		pair<int,int> p = q.top();
		q.pop();
		printf("%d\n", a[p.first] + b[p.second]);
		if(p.second+1<n) q.push( make_pair( p.first, p.second+1) );	
	}
	return 0;
}

Download