結果
問題 |
No.2617 容量3のナップザック
|
ユーザー |
![]() |
提出日時 | 2025-05-14 12:51:52 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 2,580 bytes |
コンパイル時間 | 215 ms |
コンパイル使用メモリ | 82,216 KB |
実行使用メモリ | 162,292 KB |
最終ジャッジ日時 | 2025-05-14 12:53:19 |
合計ジャッジ時間 | 9,246 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 17 WA * 23 |
ソースコード
def main(): import sys input = sys.stdin.read().split() N = int(input[0]) K = int(input[1]) seed = int(input[2]) a = int(input[3]) b = int(input[4]) m = int(input[5]) # Generate f array f = [0] * (2 * N) f[0] = seed for i in range(1, 2 * N): f[i] = (a * f[i-1] + b) % m # Generate items w1 = [] w2 = [] w3 = [] for i in range(N): wi = (f[i] % 3) + 1 vi = wi * f[N + i] if wi == 1: w1.append(vi) elif wi == 2: w2.append(vi) else: w3.append(vi) # Sort each weight group in descending order w1.sort(reverse=True) w2.sort(reverse=True) w3.sort(reverse=True) len1, len2, len3 = len(w1), len(w2), len(w3) i1 = i2 = i3 = 0 total = 0 remaining = K while remaining > 0: max_val = 0 selected = None # Check all possible candidates # Candidate A: weight 3 if i3 < len3: val = w3[i3] if val > max_val: max_val = val selected = 'A' # Candidate B: weight 2 + 1 if i2 < len2 and i1 < len1: val = w2[i2] + w1[i1] if val > max_val: max_val = val selected = 'B' # Candidate C: weight 1+1+1 if i1 + 2 < len1: val = w1[i1] + w1[i1+1] + w1[i1+2] if val > max_val: max_val = val selected = 'C' # Candidate D: weight 1+1 if i1 + 1 < len1: val = w1[i1] + w1[i1+1] if val > max_val: max_val = val selected = 'D' # Candidate E: weight 1 if i1 < len1: val = w1[i1] if val > max_val: max_val = val selected = 'E' # Candidate F: weight 2 if i2 < len2: val = w2[i2] if val > max_val: max_val = val selected = 'F' if selected is None: break # No more items total += max_val remaining -= 1 # Update indices based on selected candidate if selected == 'A': i3 += 1 elif selected == 'B': i2 += 1 i1 += 1 elif selected == 'C': i1 += 3 elif selected == 'D': i1 += 2 elif selected == 'E': i1 += 1 elif selected == 'F': i2 += 1 print(total) if __name__ == "__main__": main()