Cod sursa(job #2956423)

Utilizator Rodik_RodyRodica Vasilescu Rodik_Rody Data 19 decembrie 2022 15:32:52
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.33 kb
#define _CRT_SECURE_NO_WARNINGS

#include <iostream>
#include <cstdio>
#include <stdio.h>
#include <string>
#include <vector>
#include <algorithm>
#include <map>
#include <set>
#include <queue>
#include <list>
#include <regex>
#include <sstream>
#include <numeric>
#include <bitset>

using namespace std;

#define MAX 10001
#define CAP_MAX 10001

int n, GT;
int castig[MAX], greutate[MAX];
int v[2][MAX] = {};
vector<int> dp(MAX, 0);

void readInput() {
  int i;
  ///printf("Numarul de obiecte: ");
  scanf("%d", &n);
  /// printf("Capacitatea rucsacului: ");
  scanf("%d", &GT);


  for (i = 1; i <= n; i++) {
    ///printf("Greutate[%d] = ", i);
    scanf("%d", &greutate[i]);
    ///printf("Castig[%d] = ", i);
    scanf("%d", &castig[i]);

  }
}
void print(vector<int> v)
{
  for (int i = 0; i < v.size(); i++)
  {
    printf("%d ", v[i]);
  }
  printf("\n");
}
void Run() {
  int i, j, k;

  vector<int> dp2(MAX, 0);

  for (i = 1; i <= n; i++)
  {
    for (j = 1; j <= GT; j++)
    {
      if (greutate[i] <= j)
      {
        dp2[j] = max(dp[j], dp[j - greutate[i]] + castig[i]);
      }
    }
    dp = dp2;
    //print(dp);
  }

  printf("%d", dp[GT]);
}
int main()
{
  freopen("rucsac.in", "r", stdin);
  freopen("rucsac.out", "w", stdout);
  readInput();
  Run();
  return 0;
}