#include <iostream> #include <stdio.h> #include <queue> #include <math.h> #include <string> #include <algorithm> using namespace std; bool cmp(int a,int b) { return a<b; } int main() { int a[2010],b[2010]; int n,m,i,j,t,y; cin>>t; while(t--) { scanf("%d%d",&m,&n); for(i=0;i<n;i++) scanf("%d",&a[i]); sort(a,a+n,cmp); priority_queue <int> q; for(i=1;i<m;i++) { for(j=0;j<n;j++) scanf("%d",&b[j]); sort(b,b+n,cmp); for(j=0;j<n;j++) { q.push(b[0]+a[j]); } for(j=1;j<n;j++) { for(y=0;y<n;y++) { if(a[y]+b[j]>=q.top()) break; q.pop(); q.push(a[y]+b[j]); } } for(j=0;j<n;j++) { a[n-1-j]=q.top(); q.pop(); } } for(i=0;i<n;i++) { if(i==0) printf("%d",a[i]); else printf(" %d",a[i]); } cout << endl; } return 0; }
原文:http://www.cnblogs.com/yuanbo123/p/6368613.html