Cod sursa(job #1018568)
Utilizator | Data | 29 octombrie 2013 19:15:59 | |
---|---|---|---|
Problema | Problema rucsacului | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.49 kb |
#include <fstream>
using namespace std;
ifstream f("rucsac.in");
ofstream g("rucsac.out");
short int gr[5001],G,pr[5001],n,i,l,j;
int d[2][10001];
int maxi(int a,int b)
{
if (a>b) return a;
return b;
}
int main()
{
f>>n>>G;
for (i=1;i<=n;i++)
f>>gr[i]>>pr[i];
l=0;
for (i=1;i<=n;i++,l=1-l)
for (j=0;j<=G;j++)
{
d[1-l][j]=d[l][j];
if (gr[i]<=j)
d[1-l][j]=maxi(d[1-l][j],d[l][j-gr[i]]+pr[i]);
}
g<<d[l][G];
return 0;
}