Pagini recente » Monitorul de evaluare | Cod sursa (job #2242939) | Cod sursa (job #1145108) | Cod sursa (job #369730) | Cod sursa (job #2287073)
#include <fstream>
#include <set>
#include <vector>
#include <algorithm>
using namespace std;
ifstream f("lupu.in");
ofstream g("lupu.out");
struct oaie
{
int lana;
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_aux;
multiset <oaie> oi_disp;
int main()
{
int n,range,pas;
f>>n>>range>>pas;
oi.resize(n);
for(int i=0;i<n;++i)
{
f>>oi[i].poz>>oi[i].lana;
//oi_aux.insert(oi[i]);
}
sort(oi.begin(),oi.end(),comparaOiPoz);
int range_temp=range%pas;
int ans=0;
int i=0;
while(range_temp<=range)
{
for(;oi[i].poz<=range_temp;++i)
oi_disp.insert(oi[i]);
ans+=oi_disp.begin()->lana;
oi_disp.erase(oi_disp.begin());
range_temp+=pas;
}
g<<ans;
return 0;
}