Cod sursa(job #2845790)

Utilizator marcumihaiMarcu Mihai marcumihai Data 8 februarie 2022 12:58:00
Problema Lupul Urias si Rau Scor 32
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.34 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f ("lupu.in");
ofstream g ("lupu.out");

long long n;
struct oitza
{
    long long val;
    long long timp;
    long long parte;
    bool operator < (const oitza &A) const
    {
        return A.val<val;
    }

};
long long l;
oitza a[100005];
long long x;
priority_queue <oitza> Q;

int cmp(oitza A, oitza B)
{
    return A.timp>B.timp;
}


int main()
{
    f>>n>>x>>l;
    int oimaxim=x/l+1;
    int lung=0;
    for(int i=1; i<=n; ++i)
    {
        long long prim, secund;
        f>>secund>>prim;
        if(x>=secund)
        {
            ++lung;
            a[lung].val=prim;
            a[lung].timp=secund;
            a[lung].parte=(x - secund) / l;
        }

    }
    sort(a+1, a+lung+1, cmp);


    Q.push(a[1]);
    for(int i=2; i<=lung; ++i)
    {
        if(a[i].parte>a[i-1].parte)
            Q.push(a[i]);
        else if(a[i].val>Q.top().val)
        {
            cout<<Q.top().val<<" "<<a[i].val<<"\n";
            Q.pop();
            Q.push(a[i]);
        }
    }
    long long nr=0;
    long long cont=0;
    while(!Q.empty())
    {
        cout<<Q.top().parte<<" "<<Q.top().timp<<" "<<Q.top().val<<"\n";
        nr+=Q.top().val;
        Q.pop();
        ++cont;

    }
    cout<<cont;
    g<<nr;


    return 0;
}