1 solutions
-
0
C :
#include <stdio.h> #include <string.h> int main() { int T, M, result[1024], time, price, i; while (EOF != scanf("%d%d", &T, &M)){ memset(result, 0, sizeof(result)); while (M--){ scanf("%d%d", &time, &price); if (time > T){ continue; } for (i = T; i >= time; i--){ if (result[i-time]+price > result[i]){ result[i] = result[i-time]+price; }else{ result[i] = result[i]; } } } printf("%d\n", result[T]); } return 0; }C++ :
#include <stdio.h> #include <algorithm> #include <cstring> using namespace std; const int V = 100 + 50; int t, n, dp[V]; int main() { while(~scanf("%d%d", &t, &n)) { memset(dp, 0, sizeof(dp)); while(n--) { int a, b; scanf("%d%d", &a, &b); for(int j = t; j >= a; --j) dp[j] = max(dp[j], dp[j - a] + b); } printf("%d\n", dp[t]); } }
- 1
Information
- ID
- 19516
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By