結果
| 問題 |
No.1743 Permutation Code
|
| ユーザー |
gew1fw
|
| 提出日時 | 2025-06-12 20:49:53 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,384 bytes |
| コンパイル時間 | 145 ms |
| コンパイル使用メモリ | 81,852 KB |
| 実行使用メモリ | 75,844 KB |
| 最終ジャッジ日時 | 2025-06-12 20:52:21 |
| 合計ジャッジ時間 | 12,217 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 7 TLE * 1 -- * 22 |
ソースコード
import sys
from sys import stdin
def compute_n(length):
n = 0
total_bits = 0
while True:
n += 1
bits = n.bit_length()
total_bits += bits
if total_bits == length:
return n
if total_bits > length:
return -1
def backtrack(c, binaries, n, used, path, result, pos):
if pos == len(c):
result.extend(path)
return True
max_len = 0
for num in binaries:
l = len(num)
if l > max_len and l <= len(c) - pos:
max_len = l
for l in range(max_len, 0, -1):
if pos + l > len(c):
continue
current = c[pos:pos+l]
if current not in binaries:
continue
num = int(current, 2)
if num < 1 or num > n:
continue
if not used[num]:
used[num] = True
if backtrack(c, binaries, n, used, path + [num], result, pos + l):
return True
used[num] = False
return False
def solve():
c = stdin.read().strip()
length = len(c)
n = compute_n(length)
if n == -1:
print("Invalid input")
return
binaries = {bin(i)[2:]: i for i in range(1, n+1)}
used = [False] * (n + 2)
result = []
backtrack(c, binaries, n, used, [], result, 0)
print(' '.join(map(str, result)))
if __name__ == "__main__":
solve()
gew1fw