POJ 2442 Sequence
Time Limit: 6000MS | Memory Limit: 65536K | |
Total Submissions: 5137 | Accepted: 1572 |
Description
Input
Output
Sample Input
1 2 3 1 2 3 2 2 3
Sample Output
3 3 4
Source
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <queue>
#include <vector>
#include <algorithm>
#define N 2003
using namespace std;
struct node
{
int i;
int n;
};
struct cmp
{
bool operator ()(const node&a,const node&b)
{
return a.n>b.n;
}
};
int a[N],b[N],c[N];
int m,n;
int d[N];
void del()
{
int i;
for(i=0;i<n;i++)
d[i]=0;
node t;
priority_queue<node,vector<node>,cmp> Q;
for(i=0;i<n;i++)
{
t.i=i;
t.n=a[i]+b[d[i]];
Q.push(t);
}
int te=n;i=0;
while(te--)
{
t=Q.top();Q.pop();
c[i++]=t.n;
t.n=a[t.i]+b[++d[t.i]];
Q.push(t);
}
for(i=0;i<n;i++)
a[i]=c[i];
}
int main()
{
int T;
int i;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&m,&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
sort(a,a+n);
while(--m)
{
for(i=0;i<n;i++)
scanf("%d",&b[i]);
sort(b,b+n);
del();
}
n--;
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("%d\n",a[i]);
}
return 0;
}