Pagini recente » Cod sursa (job #1538013) | Cod sursa (job #2865625) | Cod sursa (job #2378582) | Cod sursa (job #961150) | Cod sursa (job #3195181)
#include <bits/stdc++.h>
#pragma GCC optimize("Ofast,unroll-loops")
#pragma GCC target("avx,avx2,fma")
using namespace std;
#define fastIO ios_base::sync_with_stdio(NULL);cin.tie(NULL);
#define testCases int tc;cin>>tc;while(tc--);
#define ll long long
#define ld long double
#define sza(x) ((int)x.size())
#define all(a) (a).begin(),(a).end()
#define PI 3.1415926535897932384626433832795l
template<typename T> inline T gcd(T a,T b){return (b?__gcd(a,b):a);}
template<typename T> inline T lcm(T a,T b){return (a*(b/gcd(a,b)));}
const int NMAX = 1e3 + 5;
struct obj
{
int pr, gr;
};
obj v[NMAX];
int dp[NMAX][NMAX];
static inline void solve();
int main(int argc, char** argv)
{
(void)! freopen ("rucsac.in", "r", stdin);
(void)! freopen ("rucsac.out", "w", stdout);
fastIO
// testCases
solve();
return 0;
}
static inline void solve()
{
int n, g; cin >> n >> g;
for (int i = 1; i <= n; ++i) cin >> v[i].gr >> v[i].pr;
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= g; ++j)
if (v[i].gr <= j) dp[i][j] = max(dp[i - 1][j], v[i].pr + dp[i - 1][j - v[i].gr]);
else dp[i][j] = dp[i - 1][j];
cout << dp[n][g];
}