Pagini recente » Cod sursa (job #2426595) | Atasamentele paginii Rezultate Info Oltenia 2019 Proba Individuala | Cod sursa (job #2584670) | Cod sursa (job #2560749) | Cod sursa (job #2458086)
#include <fstream>
#include <algorithm>
#include <vector>
#define NMAX 100005
using namespace std;
ifstream fin("gutui.in");
ofstream fout("gutui.out");
struct chestie
{
int grupa, gr;
} v[NMAX];
inline bool cmp1(chestie a, chestie b)
{
if(a.grupa == b.grupa)
return (a.gr > b.gr);
return (a.grupa < b.grupa);
}
inline bool cmp2(chestie a, chestie b){
return a.gr < b.gr;
}
vector<chestie> taken;
int main()
{
int n, hm, u;
fin >> n >> hm >> u;
for(int i = 1; i <= n; ++i)
{
int h, g;
fin >> h >> g;
v[i].grupa = (hm - h) / u + 1;
v[i].gr = g;
}
sort(v + 1, v + n + 1, cmp1);
taken.push_back(v[1]);
int i = 2;
int grup = 2;
while(grup <= v[n].grupa)
{
while(v[i].grupa == grup - 1)
++i;
taken.push_back(v[i]);
if(i == n)
break;
++i;
while(v[i].grupa == grup){
sort(taken.begin(), taken.end(), cmp2);
if(taken[0].gr < v[i].gr)
taken[0] = v[i];
++i;
}
}
long long s = 0;
for(int i = 0; i < taken.size(); ++i)
s += taken[i].gr;
fout << s << '\n';
return 0;
}