結果
| 問題 | No.3735 Offbeat Permutation Tree |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-09-19 15:14:07 |
| 言語 | PyPy3 (7.3.23 + ACL) |
| 結果 |
AC
不安定
|
| 実行時間 | 123 ms / 2,000 ms |
| + 382µs | |
| コード長 | 1,736 bytes |
| 記録 | |
| コンパイル時間 | 378 ms |
| コンパイル使用メモリ | 82,584 KB |
| 実行使用メモリ | 102,204 KB |
| 最終ジャッジ日時 | 2026-09-19 15:14:16 |
| 合計ジャッジ時間 | 6,549 ms |
|
ジャッジサーバーID (参考情報) |
judge3_0 / judge5_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 35 |
ソースコード
from random import shuffle
# N偶数は正しくないよ!
N=int(input())
if N<=3:
print("-1")
exit()
if N==4:
print(
"""1 2
3 4
1 5
2 6
4 8
6 7
7 8
7 11
9 10
11 12
9 13
11 15
12 16
13 14
14 15
""")
exit()
if N%2==0:
P=list(range(1,N-1))
P.pop(P.index(N-3))
p=[]
while True:
shuffle(P)
p=[0]+P+[N-3]
flg=True
for i in range(1,N-1):
if i%2==0:
if p[i-1]==p[i]+1:
flg=False
else:
if p[i-1]==p[i]-1:
flg=False
if flg:
break
P=[]
for i in range(N-1):
rng=range(i*N,(i+1)*N)
if i%2==1:
rng=reversed(rng)
for j in rng:
P.append(j)
dnt=set()
for i in range(1,N-1):
dnt.add(i*N+p[i])
for i in range(N*N-N-3):
if P[i] not in dnt:
print(P[i]+1,P[i+1]+1)
else:
print(P[i+1]+1-N,P[i+1]+1)
print(N*N-N+1,N*N-N-N+1)
for i in range(N-2):
print(N*N-N+1+i,N*N-N+2+i)
print(N*N,N*N-N)
print(N*N-N,N*N-N-1)
print(N*N-N-1,N*N-1)
exit(0)
P=list(range(1,N-1))
p=[]
while True:
shuffle(P)
p=[0]+P+[N-1]
flg=True
for i in range(1,N):
if i%2==0:
if p[i-1]==p[i]+1:
flg=False
else:
if p[i-1]==p[i]-1:
flg=False
if flg:
break
P=[]
for i in range(N):
rng=range(i*N,(i+1)*N)
if i%2==1:
rng=reversed(rng)
for j in rng:
P.append(j)
dnt=set()
for i in range(1,N):
dnt.add(i*N+p[i])
for i in range(N*N-1):
if P[i] not in dnt:
print(P[i]+1,P[i+1]+1)
else:
print(P[i+1]+1-N,P[i+1]+1)