結果
問題 | No.2965 Don't Stop the Game again |
ユーザー |
![]() |
提出日時 | 2024-10-28 23:53:03 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 117 ms / 2,024 ms |
コード長 | 888 bytes |
コンパイル時間 | 440 ms |
コンパイル使用メモリ | 82,100 KB |
実行使用メモリ | 71,416 KB |
平均クエリ数 | 297.84 |
最終ジャッジ日時 | 2024-10-28 23:53:12 |
合計ジャッジ時間 | 8,348 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 45 |
ソースコード
N = 50 P = int(input()) Q = list(map(int, input().split())) idx_one = -1 for i in range(len(Q)): if Q[i] == 1: idx_one = i break ops = [] for j in range(N): ops.append((1, j + 1)) idxs = [] for i in range(N): if i != idx_one: idxs.append(i) pp = 1 while (1 << pp) <= P: pp += 1 prev = idx_one for i in range(pp): ops.append((4, prev + 1, prev + 1, idxs[i] + 1)) prev = idxs[i] tas = [] now = P for i in range(pp): if (now >> i) & 1: tas.append(idxs[i]) if len(tas) == 1: idxs[pp] = tas[0] else: ops.append((4, tas[0] + 1, tas[1] + 1, idxs[pp] + 1)) for i in range(2, len(tas)): ops.append((4, tas[i] + 1, idxs[pp] + 1, idxs[pp] + 1)) for i in range(N): if not i in [idx_one, idxs[pp]]: ops.append((3, idxs[pp] + 1, i + 1, i + 1)) print(len(ops)) for op in ops: print(op[0]) print(*op[1:])