Pagini recente » Cod sursa (job #2653498) | Cod sursa (job #1374506) | Cod sursa (job #2223951) | Cod sursa (job #3040048) | Cod sursa (job #2071280)
#include <cstdio>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
FILE * in = fopen("lupu.in","r");
FILE * out = fopen("lupu.out","w");
vector < pair<int,int> > v;
struct cmp2
{
bool operator () (const int &a,const int &b)
{
return a>b;
}
};
int n,x,l,s=0;
inline bool cmp(pair<int,int> a, pair<int,int> b)
{
if(a.first == b.first)
return a.second>b.second;
return a.first>b.first;
}
priority_queue <int,vector<int>,cmp2> heap;
int main()
{
fscanf(in,"%d%d%d",&n,&l,&x);
for(int i=1; i<=n; i++)
{
int x,y;
fscanf(in,"%d%d",&x,&y);
v.push_back({x,y});
}
sort(v.begin(),v.end(),cmp);
for(int i=0;i<v.size();i++)
fprintf(out,"%d %d\n",v[i].first,v[i].second);
for(int i=0;i<v.size();i++)
{
if(v[i].first<=l)
{
if(v[i].first+x*i<=l)
{
s+=v[i].second;
heap.push(v[i].second);
}
else
{
heap.push(v[i].second);
s+=v[i].second;
s-=heap.top();
heap.pop();
}
}
}
fprintf(out,"%d",s);
return 0;
}