Pagini recente » Cod sursa (job #363163) | Cod sursa (job #2302577) | Cod sursa (job #1865382) | Cod sursa (job #466315) | Cod sursa (job #2122301)
#include <iostream>
#include <fstream>
#include <algorithm>
#define nr 5000
using namespace std;
ifstream in("rucsac.in");
ofstream out("rucsac.out");
pair<int,int> v[nr];
int N,G;
bool cond(pair<int,int> a,pair<int,int> b)
{
return a.second>b.second;
}
int main()
{
in>>N>>G;
for(int i=0;i<N;++i)
in>>v[i].first>>v[i].second;
sort(v,v+N,cond);
int cmax=0;
for(int i=0;i<N;++i)
{
int count,pos=i,sum;
count=sum=0;
while(count+v[pos].first<G && pos<N)
{
count+=v[pos].first;
sum+=v[pos].second;
++pos;
}
if(count+v[pos].first>G)
cmax=max(sum,cmax);
else cmax=max(sum+v[pos].second,cmax);
if(N==pos)
break;
}
out<<cmax;
return 0;
}