Pagini recente » Istoria paginii runda/pregoni3/clasament | Cod sursa (job #1035432) | Cod sursa (job #2106680) | Cod sursa (job #2471004) | Cod sursa (job #2287102)
#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;
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(;i<n && 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;
}