結果

問題 No.1831 Parasol
ユーザー ygd.ygd.
提出日時 2022-02-04 23:29:06
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 1,943 bytes
コンパイル時間 259 ms
コンパイル使用メモリ 82,304 KB
実行使用メモリ 90,240 KB
最終ジャッジ日時 2024-06-11 12:56:30
合計ジャッジ時間 3,306 ms
ジャッジサーバーID
(参考情報)
judge2 / judge4
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 45 ms
60,800 KB
testcase_01 AC 123 ms
89,520 KB
testcase_02 AC 47 ms
60,800 KB
testcase_03 AC 50 ms
60,308 KB
testcase_04 AC 135 ms
90,112 KB
testcase_05 AC 45 ms
60,800 KB
testcase_06 AC 45 ms
60,928 KB
testcase_07 WA -
testcase_08 WA -
testcase_09 AC 47 ms
60,544 KB
testcase_10 AC 113 ms
86,272 KB
testcase_11 AC 135 ms
90,240 KB
testcase_12 AC 89 ms
82,764 KB
testcase_13 WA -
testcase_14 AC 60 ms
73,176 KB
testcase_15 AC 75 ms
79,872 KB
testcase_16 AC 49 ms
61,568 KB
testcase_17 AC 47 ms
61,824 KB
testcase_18 AC 75 ms
78,720 KB
testcase_19 AC 47 ms
60,288 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