Pagini recente » Cod sursa (job #2036007) | Cod sursa (job #55980) | Cod sursa (job #3254868) | Cod sursa (job #1872355) | Cod sursa (job #1793580)
#include <fstream>
#include <algorithm>
#include <queue>
using namespace std;
ifstream f("lupu.in");
ofstream g("lupu.out");
const int Nmax = 100005;
int n, x, l, d[Nmax], dist, s;
pair <int, int> a[Nmax];
priority_queue <int> p;
bool Crit(pair<int, int> b, pair<int, int> c)
{
return b.first>c.first;
}
int main()
{
f>>n>>x>>l;
for(int i = 1; i <= n; i++)
{
f>>d[i]>>a[i].second;
a[i].first = (x-d[i])/l+1;
//g<<a[i].first<<' '<<a[i].second<<'\n';
}
sort(a+1, a+1+n, Crit);
dist = a[1].first;
int i = 1;
while(dist)
{
while(i <= n && dist == a[i].first)
{
p.push(a[i].second);
i++;
}
if(!p.empty())
{
s += p.top();
p.pop();
}
dist--;
}
g<<s<<'\n';
return 0;
}