Pagini recente » Cod sursa (job #1428054) | Cod sursa (job #3282417) | Cod sursa (job #1762977) | Cod sursa (job #2315228) | Cod sursa (job #1845651)
#include <fstream>
using namespace std;
int n,k,i,j,x,s,v[21][1000005];
struct vec
{
int a,b,c,d;
};
vec w[25];
void urca(int p)
{
while(p!=1&&w[p].a<w[p/2].a)
{
swap(w[p],w[p/2]);
p/=2;
}
}
void coboara(int p)
{
int fiu;
fiu=2*p;
if(fiu<=x)
{
if(fiu<x&&w[fiu].a>w[fiu+1].a) fiu++;
if(w[p].a>w[fiu].a)
{
swap(w[p],w[fiu]);
coboara(fiu);
}
}
}
int main()
{
ifstream f("interclasari.in");
ofstream g("interclasari.out");
f>>k;
for(i=1; i<=k; i++)
{
f>>n;
s+=n;
for(j=1; j<=n; j++) f>>v[i][j];
v[i][0]=n;
if(n)
{
x++;
w[x].a=v[i][1];
w[x].b=1;
w[x].c=i;
w[x].d=n;
urca(x);
}
}
g<<s<<'\n';
while(x)
{
g<<w[1].a<<" ";
if(w[1].b<w[1].d)
{
w[1].b++;
w[1].a=v[w[1].c][w[1].b];
coboara(1);
}
else
{
w[1].a=w[x].a;
w[1].b=w[x].b;
w[1].c=w[x].c;
w[1].d=w[x].d;
x--;
coboara(1);
}
}
f.close(); g.close();
return 0;
}