結果

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

ソースコード

diff #
raw source code

def main():
    n = int(input())
    if n <= 3:
        print(-1)
        return 
    Ans = [[[0, 0, 0, 0] for _ in range(n)] for _ in range(n)]
    rep = []
    if n % 2:
        l = n//2-2
        r = n//2+3
        X0 = [[0, 1], [0, 3], [1, 0], [2, 1], [3, 2], [3, 3], [4, 0], [4, 1], [4, 2]]
        X1 = [[0, 1], [0, 2], [0, 3], [0, 4], [1, 0], [1, 3], [1, 4], [2, 0], [2, 1], [2, 2], [2, 4], [3, 0], [3, 3]]
    else:
        l = n//2-2
        r = n//2+2
        X0 = [[0, 1], [0, 2], [1, 0], [1, 2], [2, 1], [2, 2], [3, 0], [3, 1]]
        X1 = [[0, 1], [0, 3], [1, 0], [2, 0], [2, 2]]
    for xx in X0:
        y, x = xx
        rep.append(((l+y)*n+l+x, (l+y)*n+l+x+1))
    for xx in X1:
        y, x = xx
        rep.append(((l+y)*n+l+x, (l+y)*n+l+x+n))
    l -= 1
    r += 1
    while 0 <= l:
        for y0 in range(l, r-1):
            if y0 != l:
                rep.append((y0*n+l, y0*n+l+n))
            if y0 != r-2:
                rep.append((y0*n+r-1, y0*n+r-1+n))
        for x0 in range(l, r-1):
            if x0 != l:
                rep.append((l*n+x0, l*n+x0+1))
            if x0 != r-2:
                rep.append(((r-1)*n+x0, (r-1)*n+x0+1))
        rep.append((l*n+l+1, l*n+l+1+n))
        rep.append(((r-1)*n+r-2, (r-1)*n+r-2-n))
        rep.append(((l+2)*n+l, (l+2)*n+l+1))
        rep.append(((r-3)*n+r-1, (r-3)*n+r-2))
        l -= 1
        r += 1
    rep.append((0, n))
    rep.append(((n-2)*n+n-1, (n-1)*n+n-1))
    for u, v in rep:
        print(u+1, v+1)
    return
    from atcoder.dsu import DSU
    uf = DSU(n*n)
    for u, v in rep:
        if uf.same(u, v):
            print("NOOO")
            print(u//n, u%n)
            print(v//n, v%n)
        uf.merge(u, v)
    print(len(uf.groups()))
    #print(uf.groups())

main()
0