Cod sursa(job #1053249)
| Utilizator | Data | 12 decembrie 2013 16:24:20 | |
|---|---|---|---|
| Problema | Problema rucsacului | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.56 kb |
#include <fstream>
using namespace std;
int main()
{
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
int n,g,a[100],b[100],d[100]={0},m=0;
fin >> n >> g;
for( int i = 0; i < n; i++ )
fin >> a[i] >> b[i];
for( int i = 0; i < n; i++ )
{
for( int j = g; j >= 0; j-- )
{
if( d[j] > 0 && j + a[i] <= g && b[i] + d[j] > d[j + a[i]] ) d[j + a[i]] = b[i] + d[j];
}
d[a[i]]=max(d[a[i]],b[i]);
}
for( int i = 0; i <= g; i++)
if( d[i] > m) m = d[i];
fout << m;
}
