#include<iostream>
#include<string.h>
#include<stdio.h>
#include<queue>
#include<algorithm>
#include<cmath>
using namespace std;
struct node
{
int s,b;
node(int s,int b):s(s),b(b)
{
}
bool operator<(const node& rhs)const
{
return s<rhs.s;
}
};
bool cmp(const int &a,const int &b)
{
return a>b;
}
int cmper(const void *a,const void *b)
{
return *(int *)a <* (int *)b;
}
int main()
{
int a[100010];
int b[100010];
int c[100010];
int m,n;
priority_queue<node>q;
while(scanf("%d%d",&m,&n))
{
for(int i=0;i<m;i++)
scanf("%d",&a[i]);
for(int i=0;i<m;i++)
scanf("%d",&b[i]);
qsort(a,m,sizeof(int),cmper);
qsort(b,m,sizeof(int),cmper);
for(int i=0;i<m;i++)
q.push(node(a[i]+b[0],0));
for(int i=0;i<n;i++)
{
node u=q.top();
q.pop();
c[i]=u.s;
int k=u.b;
if(k+1<n)q.push(node(u.s-b[0]+b[k+1],k+1));
}
printf("%d",c[n-1]);
for(int i=n-2;i>=0;i--)
printf(" %d",c[i]);
printf("\n");
}
}
7
最新推荐文章于 2024-08-11 11:45:05 发布