Cod sursa(job #3342268)

Utilizator zionlyismAdobroaiei David zionlyism Data 23 februarie 2026 16:49:23
Problema Lupul Urias si Rau Scor 56
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <fstream>
#include <algorithm>
#include <queue>

#define NMAX 100002
#define INF 1e9

using namespace std;

ifstream fin ("lupu.in");
ofstream fout ("lupu.out");

struct oaie{int lana, it;};

int n, x, l;
oaie a[NMAX]; //a[i].it = la al catalea pas pot maxim sa o iau

priority_queue<int> pq;

int pmax; //cate oi pot alege maxim = max(a[i].it) pt orice i = 1, n

int main()
{
    int i, d, aux;
    fin>>n>>x>>l;
    for(i = 1; i <= n; i++)
    {
        fin>>d>>aux;
        if(d > x) //oricum nu as putea sa o iau
        {
           a[i].it = -1;
           a[i].lana = -INF;
        }
        else
        {
           a[i].it = (x - d) / l;
           pmax = max(pmax, a[i].it);
           a[i].lana = aux;
        }
    }
    for(i = 1; i <= n; i++)
        if(a[i].it == pmax)
           pq.push(a[i].lana);
    long long int rez = 0;
    int alese = 0;
    while(alese <= pmax)
    {
         rez += pq.top(); pq.pop();
         alese++;
         for(i = 1; i <= n; i++)
            if(a[i].it == pmax - alese)
              pq.push(a[i].lana);
    }
    fout<<rez<<'\n';
    return 0;
}