Cod sursa(job #2844871)

Utilizator vladakingpopescu vlad vladaking Data 5 februarie 2022 20:01:54
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb

#include <bits/stdc++.h>
using namespace std;
int d[50002];
int p[50000];
int v[50000];
int n, suma, indiceMaximUnu, i, j, G, st;
int main () {
  ifstream fin ("rucsac.in");
  ofstream fout("rucsac.out");
  fin>>n >> G;
  for (i=1;i<=n;i++) {
      fin>>v[i] >> p[i];
  }
  d[0] = 0;
  for(i = 1;i<=G;i++){
      d[i] = -1;
  }
  indiceMaximUnu = 0;
  for (i=1;i<=n;i++) {
      /// am ajuns la v[i] si facem sume luandu-l in calcul si pe el
      for (j=indiceMaximUnu;j>=0;j--)
          if (d[j] != -1)
              if(j+v[i] <= G){
                  if(d[j+v[i]] < d[j] + p[i]){
                      d[j+v[i]] =d[j]+p[i];
                      indiceMaximUnu = max(indiceMaximUnu, j+v[i]);
                  }
              }
  }

  int ans = 0;
  for(i = 0;i<=G;i++){
      ans = max(ans, d[i]);
  }

  fout << ans;

  /// st va fi indiceMaximUnu
/// am    cout<<st

  return 0;

}