제출 #1295572

#제출 시각아이디문제언어결과실행 시간메모리
1295572michaeltaranikKnapsack (NOI18_knapsack)C++17
73 / 100
1096 ms580 KiB
#include <stdio.h>
#include <limits.h>

typedef long long ll;

#define MAX_S 10001  // Adjust based on your maximum expected 's' value

void solve() {
    int s, n;
    scanf("%d %d", &s, &n);
    
    ll dp[MAX_S] = {0};  // Initialize all to 0
    
    for (int i = 0; i < n; ++i) {
        int w;
        ll v, q;
        scanf("%lld %d %lld", &v, &w, &q);
        
        // binary optimization
        for (ll k = 1; q > 0; k <<= 1) {
            ll take = (k < q) ? k : q;
            ll chunkV = take * v;
            ll chunkW = take * w;

            if (chunkW <= s) {
                for (int j = s; j >= chunkW; --j) {
                    if (dp[j - chunkW] + chunkV > dp[j]) {
                        dp[j] = dp[j - chunkW] + chunkV;
                    }
                }
            }
            q -= take;
        }
    }

    printf("%lld\n", dp[s]);
}

int main() {
    solve();
    return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

knapsack.cpp: In function 'void solve()':
knapsack.cpp:10:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   10 |     scanf("%d %d", &s, &n);
      |     ~~~~~^~~~~~~~~~~~~~~~~
knapsack.cpp:17:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   17 |         scanf("%lld %d %lld", &v, &w, &q);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...