Pagini recente » Cod sursa (job #1698132) | Cod sursa (job #2989257) | Cod sursa (job #1470421) | Cod sursa (job #838953) | Cod sursa (job #2287083)
#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 operator<(const oaie& other) const
{
if(lana>other.lana)
return true;
if(lana<other.lana)
return false;
if(poz<other.poz)
return true;
return false;
}
};
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 <oaie> 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]);
if(!oi_disp.empty())
{
ans+=oi_disp.begin()->lana;
oi_disp.erase(oi_disp.begin());
range_temp+=pas;
}
}
g<<ans;
return 0;
}