Pagini recente » Cod sursa (job #1108567) | Cod sursa (job #1490492) | Cod sursa (job #9189) | Cod sursa (job #431051) | Cod sursa (job #2174533)
#include <fstream>
using namespace std;
ifstream f("rucsac.in");
ofstream g("rucsac.out");
int i,n,gmax,ultim,j;
int sortat,pr[5005],gr[5005];
int pret[5005];
int main()
{
f>>n>>gmax;
for(i=1;i<=n;i++)
{
f>>gr[i]>>pr[i];
}
while(!sortat)
{
sortat=1;
for(i=1;i<n;i++)
if(gr[i]>gr[i+1]){swap(gr[i],gr[i+1]);swap(pr[i],pr[i+1]);sortat=0;}
else if(gr[i]==gr[i+1] && pr[i]>pr[i+1]){swap (pr[i],pr[i+1]);sortat=0;}
}
pret[gr[1]]=pr[1];
ultim=gr[1];
for(i=2;i<=n;i++)
{
for(j=ultim;j>=1;j--)
if(pret[j])pret[j+gr[i]]=max(pret[j+gr[i]],pret[j]+pr[i]);
pret[gr[i]]=max(pret[gr[i]],pr[i]);
ultim=ultim+gr[i];
}
g<<pret[gmax]<<'\n';
return 0;
}