Cod sursa(job #1809265)
| Utilizator | Data | 18 noiembrie 2016 19:27:47 | |
|---|---|---|---|
| Problema | Problema rucsacului | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.55 kb |
#include <fstream>
struct {
int w, p;
} v[5000];
int d[10000];
int main(int argc, char **argv)
{
std::ifstream in("rucsac.in");
std::ofstream out("rucsac.out");
int n, r;
in >> n >> r;
for (int i = 0; i < n; i++)
in >> v[i].w >> v[i].p;
for (int i = 0; i < n; i++)
for (int j = r - v[i].w; j >= 0; j--)
if (d[j + v[i].w] < d[j] + v[i].p)
d[j + v[i].w] = d[j] + v[i].p;
int max = 0;
for (int i = 1; i <= r; i++)
if (d[i] > max)
max = d[i];
out << max << std::endl;
in.close();
out.close();
return 0;
}