結果
| 問題 | No.1743 Permutation Code |
| ユーザー |
tnodino
|
| 提出日時 | 2022-04-20 06:41:54 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,052 bytes |
| コンパイル時間 | 1,222 ms |
| コンパイル使用メモリ | 12,160 KB |
| 実行使用メモリ | 553,632 KB |
| 最終ジャッジ日時 | 2025-01-03 13:56:01 |
| 合計ジャッジ時間 | 234,174 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 5 TLE * 20 MLE * 5 |
ソースコード
from sys import setrecursionlimit
setrecursionlimit(10**6)
def dfs(x):
global ans, flg
if x == 0:
for i in range(N+1):
ans[i] = [ans[i], i]
ans = ans[1:]
ans.sort()
ans2 = []
for i in range(N):
ans2.append(ans[i][1])
print(*ans2)
exit()
for i, b in D[x]:
flg2 = True
for k in range(i,i+b):
if flg[k]:
flg2 = False
break
if flg2:
ans[x] = i
for k in range(i,i+b):
flg[k] = 1
dfs(x-1)
ans[x] = 0
for k in range(i,i+b):
flg[k] = 0
C = input()
cnt = 0
M = len(C)
for i in range(1,1<<16):
cnt += len(bin(i)) - 2
if cnt == M:
N = i
break
B = len(bin(N)) - 2
D = [[] for _ in range(N+1)]
for b in range(1,B+1):
for i in range(M-b+1):
c = int(C[i:i+b], 2)
if c <= N and len(bin(c)) - 2 == b:
D[c].append((i, b))
ans = [0] * (N+1)
flg = [0] * M
dfs(N)
tnodino