Pagini recente » Cod sursa (job #2255528) | Cod sursa (job #1801362) | Cod sursa (job #1613802) | Cod sursa (job #837123) | Cod sursa (job #2999130)
#include<fstream>
#include<vector>
#include<queue>
#include<algorithm>
using namespace std;
ifstream cin("lupu.in");
ofstream cout("lupu.out");
struct oaie
{
int dist,lana,last;
};
vector<oaie> oi;
bool cmp(oaie &a,oaie &b)
{
return a.last > b.last;
}
int main()
{
int n,x,l; cin >> n >> x >> l;
oi.resize(n + 1);
for(int i = 1; i <= n ; i++)
{
cin >> oi[i].dist >> oi[i].lana;
if(oi[i].dist > x) oi[i].last = -1;
else
{
int c = x - oi[i].dist;
oi[i].last = c / l; oi[i].last++;
}
}
sort(oi.begin() + 1,oi.begin() + n + 1,cmp);
priority_queue<int> pq; long long ans = 0;
int now = 1;
while(now <= n)
{
int mut = now;
while(oi[now].last == oi[mut].last && mut <= n)
{
pq.push(oi[mut].lana);
mut++;
}
now = mut; ans += pq.top(); pq.pop();
}
cout << ans;
}