Pagini recente » Monitorul de evaluare | Monitorul de evaluare | Istoria paginii runda/problemiada_10 | Profil Eusebyo | Cod sursa (job #1878312)
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream f("lupu.in");
ofstream g("lupu.out");
const int NMax = 100002;
ll n,x,L,D,lana,d,ans,mx;
multiset<int> H;
struct stat{
ll x,y,nr;
};
stat a[NMax];
bool cmp(stat x, stat y){
return (x.nr > y.nr);
}
int main()
{
f >> n >> L >> D;
for(ll i = 1; i <= n; ++i){
f >> a[i].x >> a[i].y;
a[i].nr = (L - a[i].x) / D;
mx = max(mx,a[i].nr);
}
sort(a + 1, a + 1 + n, cmp);
ll ans = 0;
ll c = 1;
for(ll i = mx; i >= 0; --i){
while(a[c].nr == i){
H.insert(-a[c].y);
c++;
}
if(!H.empty()){
ans += -(*H.begin());
H.erase(H.begin());
}
}
g << ans << '\n';
return 0;
}