Pagini recente » Cod sursa (job #1680390) | Cod sursa (job #113797) | Cod sursa (job #2027967) | Cod sursa (job #1711868) | Cod sursa (job #1097245)
#include <fstream>
#define IN "rucsac.in"
#define OUT "rucsac.out"
#define DMAX 5008
using namespace std;
ifstream fin(IN);
ofstream fout(OUT);
int gmax, n;
int g[DMAX], p[DMAX], pmax[2][DMAX];
void citire();
void showtime();
int main()
{
citire();
showtime();
return 0;
}
void showtime()
{
int G, i;
for (G=1; G<=gmax; G++)
if (g[1]<=G) pmax[0][G]=p[1];
int l=1;
for (i=2; i<=n; i++)
{
for (G=1; G<=gmax; G++)
{
pmax[l][G]=pmax[1-l][G];
if (g[i]<=G && pmax[l][G]<p[i]+pmax[1-l][G-g[i]]) pmax[l][G]=p[i]+pmax[1-l][G-g[i]];
}
l=1-l;
}
fout <<pmax[1-l][gmax]<<'\n';
}
void citire()
{
fin >>n>>gmax;
int i;
for (i=1; i<=n; i++)
fin >>g[i]>>p[i];
}
/*
#include <fstream>
#define DMAX 10010
#define NMAX 5010
using namespace std;
ifstream fin ("rucsac.in");
ofstream fout ("rucsac.out");
void citire();
void pd();
void afisare();
int n, G;
int profit[DMAX];
int g[NMAX], p[NMAX];
int main()
{
citire();
pd();
afisare();
fin.close();
fout.close();
return 0;
}
void citire()
{
int i;
fin>> n>> G;
for (i=1; i<=n; i++)
fin>> g[i]>> p[i];
}
void pd()
{
int i, j;
for(i=1; i<=G; i++)
profit[i] = -1;
profit[0] = 0;
for (i=1; i<=n; i++)
for (j=G-g[i]; j>=0 ; j--)
if (profit[j]!=-1 && profit[j]+p[i] > profit[j+g[i]])
profit[j+g[i]] = profit[j] + p[i];
}
void afisare()
{
int i, maxim;
maxim=profit[1];
for (i=2; i<=G; i++)
if (profit[i]>maxim)
maxim=profit[i];
fout<< maxim<< "\n";
}
*/