码迷,mamicode.com
首页 > 其他好文 > 详细

UVA - 11997:K Smallest Sums

时间:2017-11-25 13:02:27      阅读:87      评论:0      收藏:0      [点我收藏+]

标签:sum   span   include   top   sort   int   max   names   pop   

多路归并

#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
#include<queue>
#define MAXN 755
using namespace std;
int n;
int ans[MAXN];
int a[MAXN];
struct Node{
    int Val,y;
    Node(int p1=0,int p2=0){
        Val=p1,y=p2;
    }    
    friend bool operator < (const Node &p1,const Node &p2){
        return (p1.Val>p2.Val);
    }    
};
void Merge(){
    priority_queue<Node> q;
    for(int i=1;i<=n;i++){
        q.push(Node(ans[i]+a[1],1));
    }
    for(int i=1;i<=n;i++){
        Node x=q.top();q.pop();
        ans[i]=x.Val;
        if(x.y<n){
            q.push(Node(x.Val-a[x.y]+a[x.y+1],x.y+1));
        }
    }
}
void solve(){
    for(int i=1;i<=n;i++){
        scanf("%d",&ans[i]);
    }
    sort(ans+1,ans+n+1);
    for(int i=2;i<=n;i++){
        for(int j=1;j<=n;j++){
            scanf("%d",&a[j]);
        }    
        sort(a+1,a+n+1);
        Merge();
    }    
    for(int i=1;i<=n;i++){
        printf("%d",ans[i]);
        if(i<n)printf(" ");
    }
    printf("\n");
}
int main()
{
    while(~scanf("%d",&n)){
        solve();
    }
    return 0;
}

 

UVA - 11997:K Smallest Sums

标签:sum   span   include   top   sort   int   max   names   pop   

原文地址:http://www.cnblogs.com/w-h-h/p/7894713.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!