Pagini recente » Cod sursa (job #751243) | Cod sursa (job #314716) | Cod sursa (job #1696971) | Cod sursa (job #1227842) | Cod sursa (job #2399918)
#include <bits/stdc++.h>
#define NMAX 100009
using namespace std;
ifstream fin("lupu.in");
ofstream fout("lupu.out");
struct nume{long long int c;long long int d;};
bool operator <(nume x, nume y)
{
return x.c<y.c;
}
bool compar(nume x,nume y)
{
return x.d<y.d ;
}
priority_queue<nume>C;
nume v[NMAX];
long long int N,X,L;
void citire();
int main()
{citire();
return 0;
}
void citire()
{
int i;
fin>>N>>X>>L;
for(i=1;i<=N;i++)
fin>>v[i].d>>v[i].c;
sort(v+1,v+N+1,compar);
///impart in bucati
long long int rest=(X+1)%L;
long long int sum=0;
i=1;
if(rest)
{for(i=1;i<=N && v[i].d<=rest-1;i++)
C.push(v[i]);
if(!C.empty())
{sum+=C.top().c;
C.pop();
}
}
do{
rest+=L;
for(;i<=N && v[i].d<=min(rest-1,X);i++)
C.push(v[i]);
if(!C.empty())
{sum+=C.top().c;
C.pop();
}
}
while(i<=N);
fout<<sum;
}