Pagini recente » Cod sursa (job #2075400) | Borderou de evaluare (job #2053886) | Cod sursa (job #25270) | Cod sursa (job #622075) | Cod sursa (job #2629782)
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
ifstream fin("interclasari.in");
ofstream fout("interclasari.out");
vector <int> v[21];
int n[21];
int it[21];
struct el
{
int x;
bool operator < (const el &alt) const
{
return v[x][it[x]] > v[alt.x][it[alt.x]];
}
};
priority_queue <el> p;
int main()
{
int k, i, j, x, nr = 0;
fin >> k;
for (i = 1; i<=k; i++)
{
fin >> n[i];
nr = nr + n[i];
for (j = 1; j<=n[i]; j++)
{
fin >> x;
v[i].push_back(x);
}
}
for (i = 1; i<=k; i++)
if (n[i] > 0)
p.push({i});
fout << nr << '\n';
while (p.empty() == 0)
{
x = p.top().x;
p.pop();
fout << v[x][it[x]] << ' ';
if (it[x] + 1 < n[x])
{
it[x]++;
p.push({x});
}
}
return 0;
}