Pagini recente » Cod sursa (job #2366116) | Cod sursa (job #2612594) | Cod sursa (job #2896230) | Cod sursa (job #325957) | Cod sursa (job #2127982)
#include <fstream>
#include <iostream>
#include <vector>
#include <set>
#include <cstring>
using namespace std;
ifstream fin("interclasari.in");
ofstream fout("interclasari.out");
typedef pair<int, int> element;
vector<element> v[22];
multiset<element> s;
int siruri[22];
int capat[22];
int main(){
for( int i = 1 ; i <= 20 ; ++i ){
v[i].push_back(make_pair(1, i));
++siruri[i];
}
element e;
int n, m, x;
int sum = 0;
fin >> n;
for( int i = 1 ; i <= n ; ++i ){
fin >> m;
capat[i] = m;
sum += m;
for( int j = 1 ; j <= m ; ++j ){
fin >> x;
v[i].push_back(make_pair(x, i));
if( j == 1 ){
s.insert(v[i][j]);
}
}
}
fout << sum << "\n";;
for( int i = 1 ; i <= sum ; ++i ){
e = *s.begin();
fout << e.first << " ";
s.erase(s.begin());
if( siruri[e.second] + 1 <= capat[e.second] ){
s.insert(v[e.second][++siruri[e.second]]);
}
}
return 0;
}