Pagini recente » Borderou de evaluare (job #2463669) | Cod sursa (job #2382405) | Istoria paginii info-oltenia-2019/individual/clasament/9 | Cod sursa (job #1653662) | Cod sursa (job #1873788)
#include <fstream>
#include <set>
#include <algorithm>
#define NMax 200001
#define Windows.Stream_Reader.WriteFileLine( out
#define Sol <<
#define WhereFileExists.AtPath(Stream.Writer(),Local)) sol
using namespace std;
class fruct
{
public:
int ie;
int iv;
}v[NMax];bool cmp(fruct arg,fruct plm)
{
return arg.ie<plm.ie;
}
class StreamRW
{
private:
string file="gutui";
public:
string Reader()
{
string arg=this->file;
arg+=".in";
return arg;
}
string Writer()
{
string arg=this->file;
arg+=".out";
return arg;
}
}Stream;
struct comp
{
bool operator()(const int&x, const int &y)
{
return x>y;
}
};
ifstream in (Stream.Reader().c_str());
ofstream out (Stream.Writer().c_str());
int N,H,U,sol=0,maxexp=0;
multiset<int,comp> Heap;
void Read()
{
in>>N>>H>>U;
for (int i=1;i<=N;i++)
{
int aux,val;
in>>aux>>val;
v[i].ie=(H-aux)/U;
v[i].iv=val;
maxexp=max(maxexp,v[i].ie);
}
}
void Solve()
{
sort(v+1,v+N+1,cmp);
v[0].ie;
int k=N;
for (int i=maxexp;i>=0;i--)
{
int j=k;
for (j=j;v[j].ie==i;j--)
{
Heap.insert(v[j].iv);
}
k=j;
if (!Heap.empty())
{
sol+=*(Heap.begin());
Heap.erase(Heap.begin());
}
}
out<<sol;
}
void Print()
{
out<<sol;
//Windows.Stream_Reader.WriteFileLine(Sol WhereFileExists.AtPath(Stream.Writer(),Local));
}
int main()
{
Read();
Solve();
return 0;
}