Cod sursa(job #2517332)

Utilizator MihclerioVladimir Chim Mihclerio Data 3 ianuarie 2020 13:18:14
Problema Problema rucsacului Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#pragma GCC optimize("Ofast")

#include<bits/stdc++.h>

#define all(s) s.begin(),s.end()
#define rc(x) return cout<<x<<endl,0
#define forn(i,n) for(int i=0;i<int(n);i++)
#define pb push_back
#define mp make_pair
#define fr first
#define sc second

typedef long long ll;
typedef long double ld;

const int nmax=1025;
const int mod=998244353;
const ll inf=0x3f3f3f3f3f3f3f3f;

using namespace std;

int dp[5003][10003];

int main()
{
  ios_base::sync_with_stdio(0); cin.tie(0);
  freopen("rucsac.in","r",stdin);
  freopen("rucsac.out","w",stdout);
  int n,m;
  cin>>n>>m;
  for(int i=1;i<=n;i++)
  {
    int x,y;
    cin>>x>>y;
    for(int j=1;j<=m;j++)
    {
      if(j>=x)
      dp[i][j]=max(dp[i-1][j],dp[i-1][j-x]+y); else dp[i][j]=dp[i-1][j];
    }
  }
  cout<<dp[n][m];
}