Pagini recente » Cod sursa (job #1021581) | Cod sursa (job #639162) | Cod sursa (job #223189) | Istoria paginii runda/huehuhue | Cod sursa (job #437106)
Cod sursa(job #437106)
#include<iostream>
#include<fstream>
#include<vector>
#include<algorithm>
using namespace std;
bool comp(pair<int,int> a,pair<int,int> b)
{
if(a.first!=b.first)
return a.first>b.first;
return a.second>b.second;
}
int main()
{
int n,h,u,x,y,nr[100000],max=0,i,j,nr1[100000];
vector< pair<int,int> >v;
ifstream in("gutui.in");
ofstream out("gutui.out");
in>>n>>h>>u;
for(i=0;i<n;i++)
{
in>>x>>y;
v.push_back(make_pair(x,y));
}
sort(v.begin(),v.end(),comp);
nr[0]=0;
if(v[0].first<=h)
nr[1]=v[0].second;
else
nr[1]=-1;
for(i=1;i<n;i++)
{
for(j=1;j<=i+1;j++)
{
nr1[j]=-1;
if(nr[j]>nr1[j])
nr1[j]=nr[j];
if((j-1)*u+v[i].first<=h && nr[j-1]!=-1 && nr[j-1]+v[i].second>nr1[j])
nr1[j]=nr[j-1]+v[i].second;
}
for(j=1;j<=i+1;j++)
nr[j]=nr1[j];
}
for(i=0;i<=n;i++)
if(nr[i]>max)
max=nr[i];
out<<max<<endl;
return 0;
}