Pagini recente » Cod sursa (job #681886) | Cod sursa (job #2468775) | Cod sursa (job #2309298) | Cod sursa (job #888627) | Cod sursa (job #2290978)
#include <fstream>
#include <set>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fin("lupu.in");
ofstream fout("lupu.out");
int n,x,l;
vector< pair <int, int> >oi;
multiset < int > al;
void Read()
{
int i,a,b;
fin>>n>>x>>l;
oi.push_back(make_pair(0,0));
for(i=1;i<=n;i++)
{
fin>>a>>b;
oi.push_back(make_pair(a,b));
}
sort(oi.begin(),oi.end());
}
int Solve()
{
int sum=0;
int k=x/l,i=1,j=0;
while(oi[i].first>=0&&oi[i].first<=x%l)al.insert(oi[i++].second);
if(al.size()!=0){
sum+=*al.rbegin();
al.erase(al.find(*al.rbegin()));
}
while(k>0)
{
while(oi[i].first/l==j) al.insert(oi[i++].second);
if(al.size()!=0){
sum+=*al.rbegin();
al.erase(al.find(*al.rbegin()));
}
k--;
j++;
}
return sum;
}
int main()
{
Read();
fout<<Solve();
return 0;
}