結果

問題 No.1831 Parasol
ユーザー ygd.ygd.
提出日時 2022-02-04 23:29:06
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 1,943 bytes
コンパイル時間 296 ms
コンパイル使用メモリ 87,116 KB
実行使用メモリ 92,016 KB
最終ジャッジ日時 2023-09-02 06:00:50
合計ジャッジ時間 5,084 ms
ジャッジサーバーID
(参考情報)
judge11 / judge12
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 108 ms
73,020 KB
testcase_01 AC 195 ms
90,876 KB
testcase_02 AC 108 ms
73,336 KB
testcase_03 AC 110 ms
72,848 KB
testcase_04 AC 197 ms
92,016 KB
testcase_05 AC 109 ms
73,104 KB
testcase_06 AC 111 ms
72,924 KB
testcase_07 WA -
testcase_08 WA -
testcase_09 AC 114 ms
76,828 KB
testcase_10 AC 181 ms
87,464 KB
testcase_11 AC 202 ms
91,680 KB
testcase_12 AC 154 ms
84,208 KB
testcase_13 WA -
testcase_14 AC 133 ms
78,468 KB
testcase_15 AC 140 ms
81,460 KB
testcase_16 AC 116 ms
76,804 KB
testcase_17 AC 115 ms
77,020 KB
testcase_18 AC 141 ms
80,324 KB
testcase_19 AC 110 ms
73,112 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

import sys
#input = sys.stdin.readline #文字列につけてはダメ
input = sys.stdin.buffer.readline #文字列につけてはダメ
#sys.setrecursionlimit(1000000)
#import bisect
#import itertools
#import random
#from heapq import heapify, heappop, heappush
#from collections import defaultdict 
from collections import defaultdict, deque
import copy
#import math
#from functools import lru_cache
#@lru_cache(maxsize=None)
#MOD = pow(10,9) + 7
#MOD = 998244353
#dx = [1,0,-1,0]
#dy = [0,1,0,-1]


def main():
    N = int(input())
    M = 2*N - 1
    G = [set([]) for _ in range(M)]
    A = []
    for i in range(1,M+1):
        A.extend([i for _ in range(i)])
    #print(A)
    idx = 0
    while idx < M*(N-1):
        i = idx % M
        temp = A.pop()
        G[i].add(temp)
        idx += 1
    #print(G)
    dic = defaultdict(int)
    mx = 0
    for a in A:
        dic[a] += 1
        mx = max(mx, a)
    #print(ans)
    num = 0
    val = 0
    while num < M:
        val += 1
        num += val
    amari = num - M
    #print(amari)
    #print(num,val)
    ans = []
    idx = M-1 
    while True:
        for i in reversed(range(val)):
            if amari <= 0: break
            t = copy.copy(G[idx])
            t.add(i)
            dic[i] -= 1
            nt = tuple(t)
            ans.append(nt)
            amari -= 1
            idx -= 1
        break
    #print("mid",ans)
    used = defaultdict(int)
    while idx >= 0:
        for i in reversed(range(1,mx+1)):
            #print("i",i,"dici",dic[i])
            if dic[i] == 0: continue
            t = copy.copy(G[idx])
            #print("T",t)
            t.add(i)
            nt = tuple(t)
            if used[nt] >= 2: continue
            used[nt] += 1
            ans.append(nt)
            dic[i] -= 1
            #print(nt)
            break
        idx -= 1
    print(len(ans))
    for ret in ans:
        print(*ret)






if __name__ == '__main__':
    main()
0