Cod sursa(job #2156723)

Utilizator mateicosCostescu Matei mateicos Data 8 martie 2018 22:46:44
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <cstdio>
#include <algorithm>

using namespace std;

struct kk{
  int m, g;
  float p;
}v[5005];

int d[10005];

int main()
{
    freopen("rucsac.in", "r", stdin);
    freopen("rucsac.out", "w", stdout);
    int n, m, pr, g, i, s, nr, j;
    scanf("%d%d", &n, &m);
    for(i = 0;i < n;i++){
      scanf("%d%d", &g, &pr);
      v[i].g = g;
      v[i].m = pr;
    }
    s = 0;
    for(i = 0;i < n;i++){
      for(j = m - v[i].g;j >= 0;j--){
        if(j + v[i].g <= m && d[j] > 0 || j == 0){
          if(d[j + v[i].g] < d[j] + v[i].m){
            d[j + v[i].g] = d[j] + v[i].m;
            if(d[j + v[i].g] > s)
              s = d[j + v[i].g];
          }
        }
      }
    }
    printf("%d", s);
    return 0;
}