Pagini recente » Cod sursa (job #426541) | Cod sursa (job #2441856) | Clasament simulare_6_7 | Cod sursa (job #943314) | Cod sursa (job #1051543)
#include<cstdio>
#include<vector>
#include<set>
#include<algorithm>
using namespace std;
long long i, n, m, k, s, x, y, mx;
multiset<long long> heap;
multiset<long long>::iterator it;
vector< pair<long long,long long> > v;
vector< pair<long long,long long> >::iterator p;
inline bool cmp(pair <int,int> x,pair <int,int> y) {return x.first>y.first;}
int main() {
freopen("lupu.in","r",stdin);
freopen("lupu.out","w",stdout);
scanf("%lld%lld%lld", &n, &m, &k); s=0;
//n=nr de oi||m=distanta maxima teleport||k=distanta cu care se departeaza
for (i=1; i<=n; i++) {
scanf("%lld%lld", &x, &y);
if (x<=m) {
if (x>mx) mx=x;
v.push_back(make_pair(x, y));
}
}
sort(v.begin(), v.end(), cmp);
p=v.begin();
for (i=1;i<=mx/k+1;i++) {
for (;p!=v.end()&&(*p).first<=i;p++)
heap.insert(p->second);
if (!heap.empty()) {
it=heap.end();
it--;
s+=*it;
heap.erase(it);
}
}
printf("%lld\n", s);
return 0;
}