Submission #1300289

#TimeUsernameProblemLanguageResultExecution timeMemory
1300289javahirbekKnapsack (NOI18_knapsack)Pypy 3
73 / 100
1061 ms51832 KiB
import sys input = sys.stdin.buffer.readline S, N = map(int, input().split()) dp = [0] * (S+1) for _ in range(N): v, w, c = map(int, input().split()) if c * w >= S: for j in range(w, S+1): dp[j] = max(dp[j], dp[j-w] + v) else: for r in range(w): q = [] for k in range((S-r)//w + 1): idx = r + k*w val = dp[idx] - k*v while q and q[-1][1] <= val: q.pop() q.append((k, val)) while q and q[0][0] < k - c: q.pop(0) dp[idx] = max(dp[idx], q[0][1] + k*v) print(dp[S])

Compilation message (stdout)

Compiling 'knapsack.py'...

=======
  adding: __main__.pyc (deflated 28%)

=======
#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...