Pagini recente » Cod sursa (job #2260013) | Cod sursa (job #968066) | Cod sursa (job #658019) | Cod sursa (job #986514) | Cod sursa (job #2287100)
#include <fstream>
#include <set>
#include <vector>
#include <algorithm>
using namespace std;
ifstream f("lupu.in");
ofstream g("lupu.out");
struct oaie
{
long long int lana;
long long int poz;
};
bool comparaOiPoz(oaie a,oaie b)
{
if(a.poz<b.poz)
return true;
if(a.poz>b.poz)
return false;
if(a.lana>b.lana)
return true;
return false;
}
vector <oaie> oi;
multiset <long long int> oi_disp;
int main()
{
long long int n,range,pas;
f>>n>>range>>pas;
oi.resize(n);
for(long long int i=0; i<n; ++i)
{
f>>oi[i].poz>>oi[i].lana;
}
sort(oi.begin(),oi.end(),comparaOiPoz);
long long int range_temp=range%pas;
long long int ans=0;
long long int i=0;
while(range_temp<=range)
{
for(; oi[i].poz<=range_temp; ++i)
oi_disp.insert(oi[i].lana);
if(!oi_disp.empty())
{
long long int temp=*oi_disp.rbegin();
ans+=temp;
oi_disp.erase(oi_disp.find(temp));
}
range_temp+=pas;
}
g<<ans;
return 0;
}