Pagini recente » Cod sursa (job #1351095) | Cod sursa (job #2614776) | Cod sursa (job #1103195) | Cod sursa (job #2595701) | Cod sursa (job #3222515)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream cin("lupu.in");
ofstream cout("lupu.out");
#define int long long
vector < int > dp;
vector < pair < int , int > > v;
signed main()
{
int n,x,l,ans=0;
cin>>n>>x>>l;
dp.resize(n+1);
v.resize(n+1);
for(int i=1;i<=n;i++)
cin>>v[i].first>>v[i].second;
sort(v.begin()+1,v.end());
for(int i=1;i<=n;i++)
{
if(v[i].first>x)
break;
int ax = (x - v[i].first)/l;
pair < int , int > temp ={x- l*(ax+1) + 1,0ll};
int x = lower_bound(v.begin()+1,v.begin()+i,temp)-v.begin();
x--;
dp[i]=max(dp[i-1],dp[x]+v[i].second);
ans=max(ans,dp[i]);
}
cout<<ans;
return 0;
}