Pagini recente » Cod sursa (job #3238323) | Cod sursa (job #568508) | Cod sursa (job #748953) | Cod sursa (job #253905) | Cod sursa (job #3222522)
#include <fstream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
ifstream cin("lupu.in");
ofstream cout("lupu.out");
#define int long long
vector < int > dp;
vector < pair < int, int > > v;
priority_queue < int > pq;
signed main()
{
int n,x,l,ans=0;
cin>>n>>x>>l;
dp.resize(n+1);
v.resize(n+1);
for(int i=1; i<=n; i++)
cin>>v[i].first>>v[i].second;
sort(v.begin()+1,v.end());
int best=0,nextl=x%l;
if(nextl) nextl = x - nextl;
for(int i=1; i<=n; i++)
{
while(pq.size() && nextl<=x && v[i].first>nextl)
{
nextl+=l;
best= pq.top();
ans+=best;
pq.pop();
}
if(v[i].first>x)
break;
pq.push(v[i].second);
}
while(pq.size() && nextl<=x)
{
nextl+=l;
best= pq.top();
ans+=best;
pq.pop();
}
cout<<ans;
return 0;
}