UVA 11997

K Smallest Sums
Time Limit: 1000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu

[Submit]   [Go Back]   [Status]  

Description

Problem K

K Smallest Sums

You're given k arrays, each array has k integers. There are kk ways to pick exactly one element in each array and calculate the sum of the integers. Your task is to find the k smallest sums among them.

Input

There will be several test cases. The first line of each case contains an integer k (2<=k<=750). Each of the following k lines contains k positive integers in each array. Each of these integers does not exceed 1,000,000. The input is terminated by end-of-file (EOF). The size of input file does not exceed 5MB.

Output

For each test case, print the k smallest sums, in ascending order.

Sample Input

3
1 8 5
9 2 5
10 7 6
2
1 1
1 2

Output for the Sample Input

9 10 12
2 2

Rujia Liu's Present 3: A Data Structure Contest Celebrating the 100th Anniversary of Tsinghua University
Special Thanks: Yiming Li
Note: Please make sure to test your program with the gift I/O files before submitting!
将题中K组 数组,简化成两两组合。每次用优先队列存储K个最小数。

#include
#include
#include
using namespace std;
int a[1000][1000];
int k;
void merge(int id){
     priority_queue q;
     for(int i=1;i<=k;i++)  q.push(a[1][i]+a[id][1]);
     int j=2;
     for(int j=1;j<=k;j++){
        for(int i=2;i<=k;i++){
           if(a[1][j]+a[id][i]


你可能感兴趣的:(algorithm)