Pagini recente » Cod sursa (job #97625) | Cod sursa (job #2811004) | Cod sursa (job #1711702) | Cod sursa (job #1435901) | Cod sursa (job #1613461)
#include <cstdio>
#include <iostream>
#include <vector>
#include <queue>
#include <utility>
#include <algorithm>
#include <functional>
#include <string>
#include <cstring>
#include <cmath>
#include <map>
#include <set>
#include <bitset>
#include <stack>
#include <iomanip>
#define MOD 100003
#define NMAX 10005
#define INF 0x3f3f3f3f
#define pb push_back
using namespace std;
FILE *fin = freopen("rucsac.in", "r", stdin);
FILE *fout = freopen("rucsac.out", "w", stdout);
int dp[2][NMAX];
int g[NMAX], p[NMAX];
int main() {
int n,i,S,j;
scanf("%d%d", &n, &S);
for(i=1;i<=n;++i)
scanf("%d%d", &g[i], &p[i]);
for(i=1;i<=n;++i) {
for(j=0;j<=S;++j) {
dp[i%2][j]=dp[(i+1)%2][j];
if(g[i]<=j)
dp[i%2][j]=max(dp[i%2][j], dp[(i+1)%2][j-g[i]]+p[i]);
}
}
int res=0;
for(i=1;i<=n;++i)
res=max(res, dp[i%2][S]);
cout<<res;
return 0;
}