KMIN - KMIN

Tác giả: skyvn97

Ngôn ngữ: C++

#include<cstring>
#include<cstdio>
#include<queue>
#include<algorithm>
#define MAX   50050
#define f   first
#define s   second
using namespace std;
typedef pair<int,int> ii;
int m,n,k;
int a[MAX];
int b[MAX];
int p[MAX];
priority_queue<ii,vector<ii>,greater<ii> > q;
void init(void) {
    scanf("%d",&m);
    scanf("%d",&n);
    scanf("%d",&k);
    int i;
    for (i=1;i<=m;i=i+1) {
        scanf("%d",&a[i]);
        p[i]=1;
    }
    for (i=1;i<=n;i=i+1) scanf("%d",&b[i]);
    while (!q.empty()) q.pop();
    sort(&a[1],&a[m+1]);
    sort(&b[1],&b[n+1]);
}
void process(void) {
    int i;
    ii x;
    for (i=1;i<=m;i=i+1) q.push(ii(a[i]+b[1],i));
    for (i=1;i<=k;i=i+1) {
        x=q.top(); q.pop();
        printf("%d\n",x.f);
        p[x.s]++;
        if (p[x.s]<=n) q.push(ii(a[x.s]+b[p[x.s]],x.s));
    }
}
int main(void) {
    init();
    process();
    return 0;
}

Download