Pagini recente » Cod sursa (job #2871447) | Cod sursa (job #2398555) | Cod sursa (job #1339854) | Cod sursa (job #2769311) | Cod sursa (job #2818459)
#include <bits/stdc++.h>
using namespace std;
ifstream f("gutui.in");
ofstream g("gutui.out");
const int N = 100010;
int n,hMaxim,hInitial,crestere,greutate,gutuiMax,gutuiPuse;
int64_t sol;
vector<int> greutati[N];
priority_queue<int> candidati;
int main()
{
int hMaxim,crestere;
f>>n>>hMaxim>>crestere;
for(int i=1;i<=n;i++)
{
int hInitial,greutate;
f>>hInitial>>greutate;
if(hInitial<=hMaxim)
{
gutuiMax=(hMaxim-hInitial)/crestere;
if(gutuiMax>=n)
sol+=greutate;
else
greutati[gutuiMax].push_back(greutate);
}
}
for(gutuiMax=0;gutuiMax<n;gutuiMax++)
if(greutati[gutuiMax].size())
for(auto Greutate:greutati[gutuiMax])
if(gutuiPuse<=gutuiMax)
{
sol+=Greutate;
candidati.push(-Greutate);
gutuiPuse++;
}
else
if(Greutate>-candidati.top())
{
sol+=candidati.top();
sol+=Greutate;
candidati.pop();
candidati.push(-Greutate);
}
g<<sol;
return 0;
}