Cod sursa(job #1907191)
Utilizator | Data | 6 martie 2017 18:13:11 | |
---|---|---|---|
Problema | Problema rucsacului | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.6 kb |
#include <iostream>
#include <fstream>
#include <vector>
#define max(a,b) ( a > b ? a : b )
using namespace std;
ifstream f ("rucsac.in");
ofstream g ("rucsac.out");
int n, x, G;
int main()
{
f>>n>>G;
vector < int > a(G + 1, -1);
while (n--)
{
int c, p;
f>>c>>p;
for (int i = G - c; i >= 0; i--)
{
if (a[i] == -1) continue;
a[i + c] = max(a[i + c], a[i] + p);
}
a[c] = max (a[c], p);
}
int Max = 0;
for (int i = 0; i <= G; i++)
Max = max(a[i], Max);
g<<Max;
return 0;
}