Pagini recente » Cod sursa (job #67527) | Cod sursa (job #860344) | Cod sursa (job #1809151) | Cod sursa (job #2072459) | Cod sursa (job #806958)
Cod sursa(job #806958)
#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;
}