Pagini recente » Cod sursa (job #2171689) | Cod sursa (job #51093) | Cod sursa (job #2044696) | Cod sursa (job #1041325) | Cod sursa (job #1550229)
#include<iostream>
#include<fstream>
#include<vector>
#include<queue>
#include<cstdlib>
using namespace std;
ifstream f("lupu.in");
ofstream g("lupu.out");
vector <int> G[100000005];
priority_queue <int> Q;
int n, x, l, sol, pos;
char Buffer[10000000];
int const Buffer_Size = 10000000;
void citeste(int & nr)
{
nr = 0;
while(Buffer[pos] < '0' || Buffer[pos] > '9')
pos++;
while(Buffer[pos] >= '0' && Buffer[pos] <= '9')
nr = nr*10 + Buffer[pos++] - '0';
}
void citire()
{
freopen("lupu.in", "r", stdin);
fread(Buffer, 1, Buffer_Size, stdin);
int i, lana, dist;
citeste(n);
citeste(x);
citeste(l);
for(i=1; i<=n; i++){
citeste(dist); citeste(lana);
G[dist].push_back(lana);
}
}
void rez()
{
int i, idx, j, k;
for(i = x%l; i <= x; i += l){
for(j=0; j < l && (i-j) >= 0; j++){
idx = i - j;
for(k=0; k<G[idx].size(); k++)
Q.push(G[idx][k]);
}
if(Q.size()){
sol += Q.top();
Q.pop();
}
}
g<<sol<<"\n";
}
int main()
{
citire();
rez();
return 0;
}