Mai intai trebuie sa te autentifici.
Cod sursa(job #2063121)
Utilizator | Data | 11 noiembrie 2017 09:36:59 | |
---|---|---|---|
Problema | Problema rucsacului | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.83 kb |
#include <fstream>
using namespace std;
ifstream in ("rucsac.in");
ofstream out ("rucsac.out");
struct obj
{
int g;
int v;
};
obj a[5010];
int n,gmax,smax;
int b[10010];
void load()
{
int i;
in>>n>>gmax;
for(i=1; i<=n; i++)
in>>a[i].g>>a[i].v;
}
void pd()
{
int i,maxi=0;
for( i=1; i<=gmax; i++)
b[i]=-1;
b[0]=0;
for(i=1; i<=n; i++)
{
for(int j=maxi; j>=0; j--)
{
if( b[j] != -1 && b[j+a[i].g]==-1 )
{
if(b[j] + a[i].v > b[a[i].g+j]) b[j+a[i].g] =b[j] + a[i].v;
maxi+=a[i].v;
}
}
}
}
int main()
{
load();
pd();
int val=b[1];
for(int i=2; i<=gmax; i++)
if(b[i]>val) val=b[i];
out<<val;
return 0;
}