4781 : 사탕 가게

풀이

코드

#include <cstdio>
#include <cstring>
int n, m, m1, m2, dp[10001];
inline int max(int a, int b) { return a > b ? a : b; }
int main() {
    while (1) {
        scanf("%d %d.%d", &n, &m1, &m2);
        if (!n) break;
        
        memset(dp, 0, sizeof(dp));
        m = m1 * 100 + m2;

        int ans = 0;
        for (int i = 0, c, p; i < n; i++) {
            scanf("%d %d.%d", &c, &m1, &m2);
            p = m1 * 100 + m2;
            for (int j = p; j <= m; j++) {
                dp[j] = max(dp[j], dp[j - p] + c);
                ans = max(ans, dp[j]);
            }
        }
        
        printf("%d\n", dp[m]);
    }
    return 0;
}

아무말

백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge, C, C++, 씨, 씨쁠쁠, JAVA, algorithm, 자바, 알고리즘, 자료구조, 문제, 문제 풀이, 풀이

wookje.kwon's profile image

wookje.kwon

2018-03-31 21:48

Read more posts by this author