Pagini recente » Cod sursa (job #1587885) | Cod sursa (job #631585) | Cod sursa (job #2614568) | Cod sursa (job #2979144) | Cod sursa (job #2800229)
#include <fstream>
#include <queue>
#include <algorithm>
using namespace std;
struct elem
{
int dist,lana;
};
elem sir[100009];
bool in_functie_de_dist(const elem &a, const elem &b)
{
return a.dist<b.dist;
}
struct elem_heap
{
int lana;
bool operator <(const elem_heap& other)const
{
return lana>other.lana;
}
};
priority_queue <int> heap;
int x,l;
int verif(int indice)
{
int etapa=(x-sir[indice].dist)/l+1;
return etapa;
}
int main()
{
ifstream fin("lupu.in");
ofstream fout("lupu.out");
int n;
fin>>n>>x>>l;
for(int i=1;i<=n;i++)
{
fin>>sir[i].dist>>sir[i].lana;
}
sort(sir+1,sir+n+1,in_functie_de_dist);
int etape=x/l+1;
int ind=1;
long long sum=0;
for(int i=etape;i>=1;i--)
{
while(ind<=n && verif(ind)==i)
{
heap.push(sir[ind].lana);
ind++;
}
if(!heap.empty())
{
sum+=heap.top();
heap.pop();
}
}
fout<<sum;
return 0;
}