Pagini recente » Cod sursa (job #1085692) | Cod sursa (job #1282346) | Cod sursa (job #1553489) | Cod sursa (job #5798) | Cod sursa (job #1051144)
#include<cstdio>
#include<vector>
#include<algorithm>
#include<set>
#define mp make_pair
#define pb push_back
#define ins insert
using namespace std;
multiset <int> H;
vector < pair<int,int> > T;
inline bool cmp(pair <int,int> x,pair <int,int> y)
{return x.first>y.first;}
inline void Greedy()
{
int T_Max=(*T.begin()).first;
long long Sol=0;
vector < pair<int,int> > :: iterator it=T.begin();
vector < pair<int,int> > :: iterator lim=T.end();
for (int k=T_Max;k>=1;--k)
{
while((*it).first==k && it!=lim)
{
H.ins((*it).second);
++it;
}
multiset <int> ::iterator poz=H.end();
poz--;
Sol+=(long long)(*poz);
H.erase(poz);
}
printf("%lld\n",Sol);
}
inline void Load_Data()
{
int N,K,X,d,c,t;
scanf("%d%d%d",&N,&K,&X);
for (int i=1;i<=N;++i)
{
scanf("%d%d",&d,&c);
if (K>=d) t=(K-d)/X+1, T.pb(mp(t,c));
}
sort(T.begin(),T.end(),cmp);
}
int main()
{
freopen("lupu.in","r",stdin);
freopen("lupu.out","w",stdout);
Load_Data();
Greedy();
fclose(stdin);
fclose(stdout);
return 0;
}