Cod sursa(job #2821916)

Utilizator marcumihaiMarcu Mihai marcumihai Data 23 decembrie 2021 12:26:49
Problema Lupul Urias si Rau Scor 16
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <bits/stdc++.h>

using namespace std;

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

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

};
int l;
oitza a[100005];
int 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;
    for(int i=1; i<=n; ++i)
    {
        int prim, secund;
        f>>secund>>prim;
        a[i].val=prim;
        a[i].timp=secund;
        a[i].parte=(x - secund) / l;
    }
    sort(a+1, a+n+1, cmp);


    Q.push(a[1]);
    for(int i=2; i<=n; ++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]);
        }
    }
    int nr=0;
    int 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;
}