Pagini recente » Cod sursa (job #700330) | Cod sursa (job #3212296) | Cod sursa (job #627500) | Cod sursa (job #1522763) | Cod sursa (job #2346512)
#include <bits/stdc++.h>
using namespace std;
const int MAXK = 20;
vector <int> v[MAXK + 1];
vector <int> solve (int st, int dr) {
if (st == dr) {
return v[st];
}
int mij = (st + dr) / 2;
vector <int> a = solve (st, mij);
vector <int> b = solve (mij + 1, dr);
int ia, ib;
ia = ib = 0;
vector <int> c;
while (ia < a.size () || ib < b.size ())
if (ia == a.size () || (ib < b.size () && a[ia] > b[ib]))
c.push_back (b[ib++]);
else
c.push_back (a[ia++]);
return c;
}
int main() {
int k, x, i, ni;
freopen ("interclasari.in", "r", stdin);
freopen ("interclasari.out", "w", stdout);
scanf ("%d", &k);
for (i = 1; i <= k; i++) {
scanf ("%d", &ni);
while (ni--) {
scanf ("%d", &x);
v[i].push_back (x);
}
}
vector <int> sol = solve (1, k);
printf ("%d\n", sol.size ());
for (auto x : sol)
printf ("%d ", x);
return 0;
}