Pagini recente » Cod sursa (job #1900053) | Istoria paginii runda/cnrv_1 | Cod sursa (job #2104831) | Cod sursa (job #745271) | Cod sursa (job #998745)
Cod sursa(job #998745)
#include <fstream>
#include <algorithm>
#include <vector>
#define In "lupu.in"
#define Out "lupu.out"
#define PII pair< int ,int >
#define Nmax 100004
#define val second
#define time first
using namespace std;
PII v[Nmax];
vector< int >Heap;
int n;
long long sol;
inline void Read()
{
int L, D, i, Dist;
ifstream f(In);
f >> n >> L >> D;
for(i = 1;i <= n; ++i)
{
f >> Dist >> v[i].val;
v[i].time = (L-Dist)/D+1;
}
f.close();
}
inline void Solve()
{
sort(v+1,v+n+1);
int i,time = v[n].time;
for(i = n; time; --time)
{
while(i && v[i].time==time)
{
Heap.push_back(v[i].val);
push_heap(Heap.begin(),Heap.end());
--i;
}
if(!Heap.empty())
{
sol += Heap[0];
pop_heap(Heap.begin(),Heap.end());
Heap.pop_back();
}
}
}
inline void Write()
{
ofstream g(Out);
g<<sol<<"\n";
g.close();
}
int main()
{
Read();
Solve();
Write();
return 0;
}