Cod sursa(job #2291227)

Utilizator adimiclaus15Miclaus Adrian Stefan adimiclaus15 Data 27 noiembrie 2018 19:30:34
Problema Interclasari Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
ifstream f("interclasari.in");
ofstream g("interclasari.out");
struct date
{
    int val,sir;
};
date d,minim;
int n,v[21],dim[21],a[21][1000001],nr,k;
struct cmp
{
    bool operator() (const date &X,const date &Y)
    {
        return (X.val>Y.val);
    }
};
priority_queue <date,vector<date>,cmp>MinHeap;
int main()
{
    int i,j;
    f>>k;
    for(i=1;i<=k;i++)
    {
        f>>dim[i];
        nr=nr+dim[i];
        for(j=1;j<=dim[i];j++)
        {
            f>>a[i][j];
        }
    }
    g<<nr<<"\n";
    for(i=1;i<=k;i++)
    {
        if(v[i]<dim[i])
        {
            v[i]++;
            d.val=a[i][v[i]];
            d.sir=i;
            MinHeap.push(d);
        }
    }
    while(!MinHeap.empty())
    {
        minim=MinHeap.top();
        MinHeap.pop();
        g<<minim.val<<" ";
        if(v[minim.sir]<dim[minim.sir])
        {
            v[minim.sir]++;
            d.val=a[minim.sir][v[minim.sir]];
            d.sir=minim.sir;
            MinHeap.push(d);
        }
    }
    return 0;
}