Pagini recente » Cod sursa (job #352354) | Cod sursa (job #2137516) | Cod sursa (job #1827018) | Cod sursa (job #2621382) | Cod sursa (job #2043770)
#include <fstream>
using namespace std;
ifstream in("rucsac.in");
ofstream out("rucsac.out");
int w[5005],p[5005],last[10005],best[10005];
int main()
{
int n,g,max=0,smax=-1;
last[0]=-1;
in>>n>>g;
for (int i=1;i<=n;i++)
in>>w[i]>>p[i];
for (int i=1;i<=n;i++)
for (int j=max;j>=0;j--)
if (j+w[i]<=g)
if (best[j+w[i]]<best[j]+p[i])
{
best[j+w[i]]=best[j]+p[i];
last[j+w[i]]=i;
if (j+w[i]>max) max=j+w[i];
}
for (int i=1;i<=g;i++)
if(best[i]>smax) smax=best[i];
out<<smax;
return 0;
}