Pagini recente » Cod sursa (job #141397) | Cod sursa (job #2415023) | Cod sursa (job #48778) | Cod sursa (job #2517889) | Cod sursa (job #3207716)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("lupu.in");
ofstream fout("lupu.out");
vector<pair<int, int>> v;
priority_queue<int, vector<int>, greater<int>> heap;
bool comp(const pair<int, int>& a, const pair<int, int>& b)
{
if(a.first==b.first)
return a.second>b.second;
return a.first>b.first;
}
int main()
{
int n,dmax,L;
fin>>n>>dmax>>L;
for(int i=1; i<=n; i++)
{
int a,b;
fin>>a>>b;
v.push_back(make_pair(a, b));
}
sort(v.begin(), v.end(), comp);
/*for(unsigned int i=0; i<v.size(); i++)
fout<<v[i].first<<' '<<v[i].second<<'\n';*/
int rez=0;
for(unsigned int i=0; i<v.size(); i++)
{
if(v[i].first+L*heap.size()<=dmax)
{
heap.push(v[i].second);
rez+=v[i].second;
continue;
}
if(!heap.empty())
{
if(v[i].first+L*(heap.size()-1)<=dmax)
{
if(heap.top()<v[i].second)
{
rez-=heap.top();
heap.pop();
heap.push(v[i].second);
rez+=v[i].second;
}
}
else continue;
}
}
fout<<rez;
return 0;
}