Pagini recente » Cod sursa (job #770463) | Cod sursa (job #767975) | Cod sursa (job #650836) | Cod sursa (job #1942277) | Cod sursa (job #2390718)
//ALEX ENACHE
#include <vector>
#include <algorithm>
#include <queue>
#include <map>
#include <set>
#include <unordered_map>
#include <time.h>
#include <iomanip>
#include <deque>
#include <math.h>
#include <cmath>
#include <assert.h>
#include <stack>
#include <bitset>
#include <random>
#include <chrono>
using namespace std;
//#include <iostream>
#include <fstream>
ifstream cin ("rucsac.in");ofstream cout ("rucsac.out");
int g[5010];
int v[5010];
int dp[10010];
int main() {
//freopen("input", "r", stdin);freopen("output", "w", stdout);
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cout << setprecision(10) << fixed;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
srand(time(NULL));
int n , G;
cin>>n>>G;
for (int i=1; i<=n; i++){
cin>>g[i]>>v[i];
for (int j=G-g[i]; j>=0; j--){
if (dp[j] != 0 || j == 0){
dp[j+g[i]] = max(dp[j+g[i]] , dp[j] + v[i]);
}
}
}
int ans = 0;
for (int i=G; i>=1; i--){
if (dp[i]){
ans = max(ans , dp[i]);
}
}
cout<<ans;
return 0;
}