Cod sursa(job #2821745)

Utilizator marcumihaiMarcu Mihai marcumihai Data 22 decembrie 2021 23:06:24
Problema Lupul Urias si Rau Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.25 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
    {
        if(A.timp>timp)
            return 1;
        if(A.timp==timp && A.val<val)
            return 1;
        return 0;



        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)
        {
            Q.pop();
            Q.push(a[i]);
        }
    }
    int nr=0;
    int cont=0;
    while(!Q.empty())
    {
        nr+=Q.top().val;
       /// cout<<Q.top().timp<<" "<<Q.top().val<<"\n";
        Q.pop();
        ++cont;
    }
    /// cout<<cont;
    g<<nr;


    return 0;
}