Pagini recente » Cod sursa (job #2113001) | Cod sursa (job #913067) | Cod sursa (job #2156204) | Cod sursa (job #1518395) | Cod sursa (job #2627251)
#include <bits/stdc++.h>
#define maxn 100005
std::ifstream fin ("lupu.in");
std::ofstream fout ("lupu.out");
struct Sheep{
long long dist, val;
}sheep[maxn];
bool sheepSort (Sheep a, Sheep b){
return a.dist > b.dist;
}
int main()
{
long long n, maxDist, moveDist, i, k;
long long ans=0;
fin >> n >> maxDist >> moveDist;
for (i=0; i<n; i++)
fin >> sheep[i].dist >> sheep[i].val;
std::sort (sheep, sheep+n, sheepSort);
for (i=0; i<n; i++)
if (sheep[i].dist <= maxDist)
break;
while (maxDist >=0){
std::priority_queue <long long> pq;
for (k=1; i<n; i++){
if (pq.empty() == true and maxDist-sheep[i].dist >= k*moveDist)
k++;
if (maxDist-sheep[i].dist >= k*moveDist)
break;
pq.push (sheep[i].val);
}
if (pq.empty() == false)
ans = ans + pq.top();
maxDist -= moveDist;
}
fout << ans << '\n';
return 0;
}