Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <algorithm>
- #define MAXN 50
- #define MAXC 812
- #define INF 0x3f3f3f3f
- using namespace std;
- int g[MAXN], y[MAXN], dp[MAXN][MAXC][MAXC], seen[MAXN][MAXC][MAXC], n, TC =0;
- int sol(int idx, int yel, int green){
- if(yel <0 || green <0)
- return -INF;
- if(idx > n)
- return 0;
- if(seen[idx][yel][green] == TC)
- return dp[idx][yel][green];
- seen[idx][yel][green] = TC;
- return dp[idx][yel][green] = max(sol(idx+1, yel, green), 1+sol(idx+1, yel+y[idx], g[idx]+green));
- }
- int main()
- {
- int a, b;
- while(scanf("%d", &n)!=EOF){
- scanf("%d %d", &a, &b);
- ++TC;
- for(int i = 1; i<=n; ++i)
- scanf("%d %d", g+i, y+i);
- printf("%d\n", sol(1, b,a));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement