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 }
这个都能改?

 

posted @ 2013-08-16 09:22  Anti-Magic  阅读(172)  评论(0编辑  收藏  举报