Pagini recente » Cod sursa (job #459224) | Cod sursa (job #313261) | Cod sursa (job #2239570) | Cod sursa (job #1318561) | Cod sursa (job #806619)
Cod sursa(job #806619)
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
vector<int> S[100010],V;
int n,m,l,x,y,a,niv,nivmax,i,cnt;
long long SOL;
int main()
{
freopen("lupu.in","r",stdin);
freopen("lupu.out","w",stdout);
scanf("%d%d%d",&n,&m,&l);
for(i=1;i<=n;i++)
{
scanf("%d%d",&x,&y);
a=m-x;
if(a<0)continue;
niv=a/l+1;
if(niv>10000){SOL+=niv;continue;}
if(niv>nivmax)nivmax=niv;
S[(a/l)+1].push_back(-y);
}
for(i=1;i<=nivmax;i++)
{
sort(S[i].begin(),S[i].end());
if(S[i].size()>i)S[i].resize(i);
a=S[i].size();
V.resize(V.size()+a);
V.insert(V.begin()+a,S[i].begin(),S[i].end());
sort(V.begin(),V.end());
V.resize(i);
}
for(vector<int>::iterator it=V.begin();it!=V.end();it++)
SOL+=(long long)(-(*it));
printf("%lld\n",SOL);
return 0;
}