Pagini recente » Cod sursa (job #1043114) | Cod sursa (job #2238418) | Cod sursa (job #122814) | Cod sursa (job #2211870) | Cod sursa (job #680089)
Cod sursa(job #680089)
#include <fstream>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct Quince
{
Quince() :
h(0),
w(0)
{}
Quince(const long long hh, const long long ww) :
h(hh),
w(ww)
{}
long long h;
long long w;
};
struct CompareByPickTime
{
CompareByPickTime(const long long hh, const long long uu) :
u(uu),
h(hh)
{}
bool operator() (const Quince& q1, const Quince& q2) const
{
long long h1 = (h-q1.h)/u;
long long h2 = (h-q2.h)/u;
if (h1 == h2)
{
return q1.w > q2.w;
}
return h1 < h2;
}
long long u;
long long h;
};
int main()
{
int n, h, u;
vector<Quince> vQuinces;
fstream fin("gutui.in", fstream::in);
fstream fout("gutui.out", fstream::out);
fin >> n >> h >> u;
//cout << n << " " << h << " " << u << endl;
for (int i=0; i<n; ++i)
{
long long h,w;
fin >> h >> w;
vQuinces.push_back(Quince(h,w));
//cout << h << " " << w << endl;
}
//cout << endl;
CompareByPickTime comp(h,u);
sort(vQuinces.begin(), vQuinces.end(), comp);
/*for (int i=0; i<n; ++i)
{
cout << vQuinces[i].h << " " << vQuinces[i].w << " " << (h-vQuinces[i].h)/u << endl;
}*/
unsigned long long totalWeight = 0;
for (int i=0; i<n; ++i)
{
if (h >= vQuinces[i].h)
{
totalWeight += vQuinces[i].w;
h -= u;
}
}
fout << totalWeight << endl;
fin.close();
fout.close();
return 0;
}