Cod sursa(job #1889684)

Utilizator Bodo171Bogdan Pop Bodo171 Data 22 februarie 2017 20:43:40
Problema Interclasari Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
struct pq_member
{
    int wh,val;
}el;
struct pq_comp
{
    bool operator()(pq_member unu,pq_member doi)
    {
        return unu.val>doi.val;
    }
};
priority_queue< pq_member,vector<pq_member>,pq_comp> pq;
int i,k,v[21][1000005],n,sum,lim[21],ind[21],j,lst;
int main()
{
    ifstream f("interclasari.in");
    ofstream g("interclasari.out");
    f>>k;
    for(i=1;i<=k;i++)
    {
        f>>n;sum+=n;
        for(j=1;j<=n;j++)
        {
            f>>v[i][j];
        }
        lim[i]=n;
    }
    for(i=1;i<=k;i++)
        if(lim[i]!=0)
    {
        ind[i]=1;
        el.wh=i;
        el.val=v[i][1];
        pq.push(el);
    }
    g<<sum<<'\n';
    lst=-1;
    for(i=1;i<=sum;i++)
    {
        el=pq.top();pq.pop();
        if(el.val!=lst)g<<el.val<<' ';
        lst=el.val;
        if(ind[el.wh]<lim[el.wh])
        {
            ind[el.wh]++;
            el.val=v[el.wh][ind[el.wh]];
            pq.push(el);
        }
    }
    return 0;
}