Pagini recente » Cod sursa (job #2063829) | Cod sursa (job #2343222) | Cod sursa (job #2976219) | Cod sursa (job #1898773) | Cod sursa (job #2974604)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("lupu.in");
ofstream fout("lupu.out");
const int NMAX = 100005;
int n, x, l, dist, lg, nr;
pair<int, int> v[NMAX];
multiset<int> mul;
bool comp(pair<int,int> a, pair<int,int> b)
{
return a.first < b.first;
}
int main()
{
fin >> n >> x >> l;
int ans = 0;
for (int i=1;i<=n;i++){
fin >> dist >> lg;
v[i] = {dist, lg};
if (dist <= x) {
ans += lg;
}
}
if (x == 0){
fout << ans << '\n';
return 0;
}
ans = 0;
sort(v+1, v+n+1, comp);
int i = 1, lim = x%l;
while(lim <= x){
for ( ;i<=n && v[i].first <= lim;i ++){
mul.insert(v[i].second);
}
if (!mul.empty()){
multiset<int>::iterator it = mul.end();
--it;
ans += *it;
mul.erase(it);
}
lim += l;
}
fout << ans << '\n';
return 0;
}