Pagini recente » Cod sursa (job #523759) | Cod sursa (job #386023) | Cod sursa (job #2910573) | Cod sursa (job #709611) | Cod sursa (job #2538200)
#include <fstream>
#include <algorithm>
#define NM 5008
using namespace std;
ifstream f("rucsac.in");
ofstream g("rucsac.out");
int n,G,i,j;
int gr[NM],sm[NM],p[NM];
bool cmp( int i,int j){
if(gr[i]!=gr[j]) return gr[i]<gr[j];
return sm[i]<sm[j];
}
struct vect{
int sum[10007];
};
vect a,b;
int main()
{
f>>n>>G;
for(i=1;i<=n;i++){
f>>gr[i]>>sm[i];
p[i]=i;
}
sort(p+1,p+n+1,cmp);
for(i=1;i<=n;i++){
for(j=1;j<=G;j++)
if(j<gr[p[i]]) b.sum[j]=a.sum[j];
else b.sum[j]=max(a.sum[j],a.sum[j-gr[p[i]]]+sm[p[i]]);
a=b;
}
g<<a.sum[G];
return 0;
}