一 原题
| Time Limit: 6000MS | Memory Limit: 65536K | |
| Total Submissions: 10203 | Accepted: 3352 |
Description
Input
Output
Sample Input
1 2 3 1 2 3 2 2 3
Sample Output
3 3 4
Source
二 分析
三 代码
/*
AUTHOR: maxkibble
LANG: C++
PROB: poj 2442 Sequence
*/
#include<iostream>
#include<queue>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxm = 105;
const int maxn = 2005;
int n, m, num[maxn], ans[maxn];
priority_queue<int> q;
void solve() {
cin >> m >> n;
for(int i = 0; i < n; i++) {
cin >> num[i];
}
sort(num, num + n);
memcpy(ans, num, sizeof(num));
for(int i = 1; i < m; i++) {
for(int i = 0; i < n; i++) {
cin >> num[i];
}
sort(num, num + n);
while(!q.empty()) q.pop();
for(int i = 0; i < n; i++) {
q.push(ans[0] + num[i]);
}
for(int i = 1; i < n; i++) {
for(int j = 0; j < n; j++) {
int val = ans[i] + num[j];
if(val > q.top())
break;
if(val < q.top()) {
q.pop();
q.push(val);
}
}
}
for(int i = n - 1; i >= 0; i--) {
ans[i] = q.top();
q.pop();
}
}
cout << ans[0];
for(int i = 1; i < n; i++)
cout << " " << ans[i];
cout << endl;
}
int main() {
ios::sync_with_stdio(false);
int kase;
cin >> kase;
while(kase--) {
solve();
}
return 0;
}
3046



被折叠的 条评论
为什么被折叠?



