POJ 2442 Sequence 优先队列
题目: http://poj.org/problem?id=2442
1 #include <stdio.h> 2 #include <string.h> 3 #include <queue> 4 #include <algorithm> 5 using namespace std; 6 7 priority_queue<int>q; 8 int data[2][2010]; 9 10 int main() 11 { 12 int t, n, m; 13 scanf("%d", &t); 14 while(t--) 15 { 16 while(!q.empty())q.pop(); 17 scanf("%d %d", &n, &m); 18 for(int j = 0; j < m; j++) 19 scanf("%d", &data[0][j]); 20 sort(data[0], data[0]+m); 21 for(int i = 1; i < n; i++) 22 { 23 for(int j = 0; j < m; j++) 24 { 25 scanf("%d", &data[1][j]); 26 q.push(data[1][j] + data[0][0]); 27 } 28 sort(data[1], data[1]+m); 29 for(int j = 1; j < m; j++) 30 { 31 for(int k = 0; k < m; k++) 32 { 33 if(data[0][j] + data[1][k] > q.top()) 34 break; 35 else 36 { 37 q.pop(); 38 q.push(data[0][j] + data[1][k]); 39 } 40 } 41 } 42 for(int j = 0; j < m; j++) 43 { 44 data[0][m-j-1] = q.top(); 45 q.pop(); 46 } 47 } 48 for(int i = 0; i < m-1; i++) 49 printf("%d ", data[0][i]); 50 printf("%d\n", data[0][m-1]); 51 } 52 return 0; 53 }