Pagini recente » Cod sursa (job #1398368) | Cod sursa (job #1947326) | Cod sursa (job #3131651) | Cod sursa (job #1228272) | Cod sursa (job #629588)
Cod sursa(job #629588)
#include <cstdio>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
const int N = 22;
vector <int> a[N];
// priority_queue<tip, vector<tip>, functie> nume;
priority_queue<pair<int, int>, vector<pair<int, int> >, greater<pair<int, int> > > heap;
int k, s, nr[N];
void citire() {
scanf("%d", &k);
int n, x;
for (int i = 1; i <= k; ++i) {
scanf("%d", &n);
s += n;
for (int j = 1; j <= n; ++j) {
scanf("%d", &x);
a[i].push_back(x);
}
}
}
void rez() {
for (int i = 1; i <= k; ++i) {
if (a[i].size() > 0)
heap.push(make_pair(a[i][0], i));
nr[i] = 0;
}
printf("%d\n", s);
for (int i = 1; i <= s; ++i) {
printf("%d ", heap.top().first);
int poz = heap.top().second;
heap.pop();
if (++nr[poz] < a[poz].size())
heap.push(make_pair(a[poz][nr[poz]], poz));
}
}
int main() {
freopen("interclasari.in", "r", stdin);
freopen("interclasari.out", "w", stdout);
citire();
rez();
return 0;
}