結果

問題 No.3735 Offbeat Permutation Tree
コンテスト
ユーザー convexineq
提出日時 2026-09-19 17:11:59
言語 PyPy3
(7.3.23 + ACL)
コンパイル:
pypy3 -mpy_compile _filename_
実行:
pypy3 _filename_
結果
AC  
実行時間 119 ms / 2,000 ms
+ 679µs
コード長 1,921 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 76 ms
コンパイル使用メモリ 81,408 KB
実行使用メモリ 101,552 KB
最終ジャッジ日時 2026-09-19 17:12:16
合計ジャッジ時間 6,328 ms
ジャッジサーバーID
(参考情報)
judge1_0 / judge2_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 35
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

import sys
readline = sys.stdin.readline

# T = int(readline())
# for _ in range(T):
#     ans = solve()
#     print(ans)

# n = int(readline())
# a = [int(i) for i in readline().split()]
# ab = [[int(i) for i in readline().split()] for _ in range()]
# S = readline().strip()
# b = [readline().strip() for _ in range()]

n = int(readline())

if n <= 3:
    print(-1)
    exit()

def encode(x,y):
    return x*n+y


def add1(d,t):
    def move(delta):
        nonlocal t
        t += delta
        rr.append(t)
    
    rr = [t]
    move(1)
    move(-n)
    move(-1)
    move(-n)
    move(1)
    for _ in range(d):
        move(-n)
    move(-1)
    for _ in range(d-1):
        move(n)
    move(-1)
    
    for v,w in zip(rr,rr[1:]):
        lst.append((v,w))

def add2(d,t):
    def move(delta):
        nonlocal t
        t += delta
        rr.append(t)
    
    rr = [t]
    move(-1)
    move(-1)
    move(-n)
    move(-1)
    move(n)
    for _ in range(d):
        move(-1)
    move(-n)
    for _ in range(d-1):
        move(1)
    move(-n)

    for v,w in zip(rr,rr[1:]):
        lst.append((v,w))


if n%2==0:
    lst = [(0,n),(0,1),(1,n+1),(n+1,n+2),(n+2,n+3),(2,3),(3,n+3),(n+2,2*n+2),(2*n,2*n+1),(2*n+2,2*n+3),(2*n+2,3*n+2),(2*n,3*n),(2*n+3,3*n+3),(3*n,3*n+1),(3*n+1,3*n+2)]

    for k in range(2,n//2):
        add1(2*k-2,encode(2*k,2*k))
        add2(2*k-2,encode(2*k+1,2*k+1))

    #print(len(lst))
    for i,j in lst:
        print(i+1,j+1)
    
    
else:
    lst = [(0,1),(0,n),(n,n+1),(n+1,n+2),(n+2,2),(2,3),(3,3+n),(3,4),(4,4+n),(4+n,4+2*n),(2*n+1,2*n+2),(2*n+2,2*n+3),(2*n+3,2*n+4),(3*n+2,4*n+2),(4*n+2,4*n+3),(4*n,4*n+1)]
    for j in [0,1,3,4]:
        for k in [2,3]:
            lst += [(k*n+j,(k+1)*n+j)]
    
    for k in range(2,n//2):
        add1(2*k-1,encode(2*k+1,2*k+1))
        add2(2*k-1,encode(2*k+2,2*k+2))

    #print(len(lst))
    for i,j in lst:
        print(i+1,j+1)
    
    




0