結果
問題 |
No.2617 容量3のナップザック
|
ユーザー |
![]() |
提出日時 | 2025-06-12 16:59:46 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 2,469 bytes |
コンパイル時間 | 270 ms |
コンパイル使用メモリ | 82,608 KB |
実行使用メモリ | 166,208 KB |
最終ジャッジ日時 | 2025-06-12 16:59:57 |
合計ジャッジ時間 | 9,810 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 12 WA * 28 |
ソースコード
def main(): import sys input = sys.stdin.read().split() idx = 0 N = int(input[idx]); idx +=1 K = int(input[idx]); idx +=1 seed = int(input[idx]); idx +=1 a = int(input[idx]); idx +=1 b = int(input[idx]); idx +=1 m = int(input[idx]); idx +=1 # Generate f sequence size = 2 * N f = [0] * size f[0] = seed for i in range(1, size): f[i] = (a * f[i-1] + b) % m # Separate into w3, w2, w1 w3 = [] w2 = [] w1 = [] for i in range(N): fi = f[i] w = (fi % 3) + 1 v = w * f[i + N] if w == 3: w3.append(v) elif w == 2: w2.append(v) else: w1.append(v) # Sort each in descending order w3.sort(reverse=True) w2.sort(reverse=True) w1.sort(reverse=True) i3 = 0 i2 = 0 i1 = 0 total = 0 groups_formed = 0 while groups_formed < K: possible = [] # Check group3 if i3 < len(w3): possible.append((w3[i3], 'group3')) # Check group2_1 if i2 < len(w2) and i1 < len(w1): possible.append((w2[i2] + w1[i1], 'group2_1')) # Check group1 options max_take = min(3, len(w1) - i1) if max_take >= 3: sum_v = w1[i1] + w1[i1 + 1] + w1[i1 + 2] possible.append((sum_v, 'group1_3')) elif max_take >= 2: sum_v = w1[i1] + w1[i1 + 1] possible.append((sum_v, 'group1_2')) elif max_take >= 1: possible.append((w1[i1], 'group1_1')) if not possible: break # Select the maximum value option max_val = -1 selected = None for val, typ in possible: if val > max_val: max_val = val selected = typ if selected is None: break # Form the group if selected == 'group3': total += w3[i3] i3 += 1 elif selected == 'group2_1': total += w2[i2] + w1[i1] i2 += 1 i1 += 1 elif selected == 'group1_3': total += w1[i1] + w1[i1 + 1] + w1[i1 + 2] i1 += 3 elif selected == 'group1_2': total += w1[i1] + w1[i1 + 1] i1 += 2 elif selected == 'group1_1': total += w1[i1] i1 += 1 groups_formed += 1 print(total) if __name__ == "__main__": main()