Pagini recente » Cod sursa (job #3005378) | Cod sursa (job #1572998) | Cod sursa (job #1796888) | Cod sursa (job #2734813) | Cod sursa (job #837653)
Cod sursa(job #837653)
#include <algorithm>
#include <cstdio>
#include <set>
using namespace std;
const int NMAX=100073;
pair <int,int> V[NMAX];
set <int,greater <int> > Heap;
int N,X,L,TMAX,lana;
int main() {
freopen ("lupu.in","r",stdin);
freopen ("lupu.out","w",stdout);
scanf ("%d%d%d",&N,&X,&L);
for (int i=1; i<=N; ++i) {
int D,A;
scanf ("%d%d",&D,&A);
V[i]=make_pair ((X-D)/L+1,A);
TMAX=max (TMAX,(X-D)/L+1);
}
sort (V+1,V+N+1);
int current=N;
for (int i=TMAX; i>0; --i) {
while (current>0 && V[current].first==i) {
Heap.insert (V[current].second);
--current;
}
if (Heap.size ()>0) {
lana+=*(Heap.begin ());
Heap.erase (Heap.begin ());
}
}
// for (int i=1; i<=N; ++i)
// printf ("(%d, %d) ",V[i].first,V[i].second);
printf ("\n%d",lana);
return 0;
}