Pagini recente » Cod sursa (job #2435074) | Cod sursa (job #2225247) | Cod sursa (job #789007) | Cod sursa (job #3124376) | Cod sursa (job #674933)
Cod sursa(job #674933)
#include <cstdio>
#include <set>
#define MAXN 100001
using namespace std;
int n, x, l;
long long sum;
struct comp
{
bool operator() (const pair<int,int> &left, const pair<int,int> &right)
{
if( left.first == right.first )
return left.second < right.second;
return left.first > right.first;
}
};
multiset< pair<int,int>, comp > oi;
void read()
{
freopen("lupu.in", "r", stdin);
freopen("lupu.out", "w", stdout);
scanf("%d %d %d ", &n, &x, &l);
int d, c;
for(int i = 1; i <= n; ++i)
{
scanf("%d %d", &d, &c);
oi.insert( make_pair(d, c) );
}
}
void solve()
{
int prevValue = 0;
for(; x >= 0; x -= l)
{
int dist = oi.begin()->first;
int value = oi.begin()->second;
while( dist > x )
{
if( prevValue < value )
{
sum = sum - prevValue + value;
prevValue = value;
}
oi.erase( oi.begin() );
dist = oi.begin()->first;
value = oi.begin()->second;
}
sum += value;
prevValue = value;
}
}
void printResult()
{
printf("%lld\n", sum);
}
int main()
{
read();
solve();
printResult();
return 0;
}