Pagini recente » Cod sursa (job #1387122) | Cod sursa (job #731775) | Cod sursa (job #1698151) | Cod sursa (job #89883) | Cod sursa (job #1259008)
#include <fstream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
bool comp (pair<int, int> x, pair<int, int> y)
{
if(x.first < y.first || x.first > y.first)
return x.first>y.first;
return x.second>y.second;
}
class compq
{
public:
bool operator()(pair<int, int> &x, pair<int, int> &y)
{
return x.second<y.second;
}
};
int main()
{
ifstream in ("lupu.in");
ofstream out ("lupu.out");
int n, x, l, D, L, cl=0, i, tm=0;
in>>n>>x>>l;
vector<pair<int, int> > oi;
priority_queue <pair<int, int>, vector<pair<int, int> >, compq> que;
for (i=0; i<n; i++)
{
in>>D>>L;
if(D <= x)
{
oi.push_back(make_pair((x-D)/l, L));
if ((x-D)/l > tm)
tm = (x-D)/l;
}
}
sort(oi.begin(), oi.end(), comp);
int j=0;
for(i=tm; i>=0; i--)
{
while(oi[j].first == i)
que.push(oi[j++]);
if(!que.empty())
{
cl+=que.top().second;
que.pop();
}
}
out<<cl;
return 0;
}