結果

問題 No.1017 Reiwa Sequence
ユーザー dn6049949dn6049949
提出日時 2020-04-03 23:16:26
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 2,528 bytes
コンパイル時間 407 ms
コンパイル使用メモリ 87,060 KB
実行使用メモリ 113,132 KB
最終ジャッジ日時 2023-09-16 04:40:29
合計ジャッジ時間 19,677 ms
ジャッジサーバーID
(参考情報)
judge12 / judge13
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 108 ms
71,676 KB
testcase_01 AC 98 ms
71,544 KB
testcase_02 AC 102 ms
71,532 KB
testcase_03 AC 105 ms
72,460 KB
testcase_04 AC 101 ms
71,528 KB
testcase_05 AC 100 ms
72,004 KB
testcase_06 AC 100 ms
71,912 KB
testcase_07 AC 99 ms
71,840 KB
testcase_08 AC 101 ms
71,532 KB
testcase_09 WA -
testcase_10 AC 249 ms
100,576 KB
testcase_11 AC 110 ms
76,856 KB
testcase_12 WA -
testcase_13 WA -
testcase_14 AC 113 ms
77,444 KB
testcase_15 AC 120 ms
77,160 KB
testcase_16 AC 114 ms
77,312 KB
testcase_17 AC 134 ms
77,776 KB
testcase_18 AC 114 ms
77,356 KB
testcase_19 AC 223 ms
91,404 KB
testcase_20 AC 234 ms
93,868 KB
testcase_21 AC 195 ms
87,052 KB
testcase_22 AC 234 ms
93,188 KB
testcase_23 AC 245 ms
94,584 KB
testcase_24 AC 273 ms
99,260 KB
testcase_25 AC 233 ms
94,228 KB
testcase_26 AC 206 ms
89,892 KB
testcase_27 WA -
testcase_28 WA -
testcase_29 AC 241 ms
98,436 KB
testcase_30 AC 260 ms
99,452 KB
testcase_31 WA -
testcase_32 AC 179 ms
90,148 KB
testcase_33 WA -
testcase_34 AC 103 ms
71,500 KB
testcase_35 AC 100 ms
71,700 KB
testcase_36 AC 101 ms
71,616 KB
testcase_37 WA -
testcase_38 WA -
testcase_39 AC 233 ms
96,592 KB
testcase_40 WA -
testcase_41 WA -
testcase_42 WA -
testcase_43 WA -
testcase_44 WA -
testcase_45 WA -
testcase_46 WA -
testcase_47 WA -
testcase_48 AC 157 ms
105,252 KB
testcase_49 WA -
testcase_50 AC 158 ms
105,140 KB
testcase_51 WA -
testcase_52 AC 228 ms
91,040 KB
testcase_53 AC 154 ms
82,812 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

#!usr/bin/env python3
from collections import defaultdict, deque
from heapq import heappush, heappop
from itertools import permutations, accumulate
import sys
import math
import bisect
def LI(): return [int(x) for x in sys.stdin.buffer.readline().split()]
def I(): return int(sys.stdin.buffer.readline())
def LS():return [list(x) for x in sys.stdin.readline().split()]
def S():
    res = list(sys.stdin.readline())
    if res[-1] == "\n":
        return res[:-1]
    return res
def IR(n):
    return [I() for i in range(n)]
def LIR(n):
    return [LI() for i in range(n)]
def SR(n):
    return [S() for i in range(n)]
def LSR(n):
    return [LS() for i in range(n)]

sys.setrecursionlimit(1000000)
mod = 1000000007

def solve():
    n = I()
    a = LI()
    d = defaultdict(lambda : 0)
    for i in a:
        if d[i]:
            d[i] += 1
            break
        d[i] = 1
    if d[i] == 2:
        print("Yes")
        ans = []
        for j in a:
            if j == i and d[j]:
                ans.append((2*d[j]-3)*j)
                d[j] -= 1
            else:
                ans.append(0)
        print(*ans)
        return
    if n > 21:
        print("No")
        return
    f = [0,1,-1]
    dpl = defaultdict(lambda : None)
    dpl[0] = 0
    dpl[a[0]] = 1
    dpl[-a[0]] = 2
    l = set(dpl.keys())
    n1 = n>>1
    for ii in range(1,n1):
        b = 3**ii
        ai = a[ii]
        for i in l:
            for k in range(3):
                ni = f[k]*ai+i
                nj = dpl[i]+b*k
                if nj:
                    dpl[ni] = nj
        l = set(dpl.keys())
    n2 = n-n1
    dpr = defaultdict(lambda : None)
    dpr[0] = 0
    dpr[a[n1]] = 1
    dpr[-a[n1]] = 2
    l = set(dpr.keys())
    for ii in range(1,n2):
        b = 3**ii
        ai = a[ii+n1]
        for i in l:
            for k in range(3):
                ni = f[k]*ai+i
                nj = dpr[i]+b*k
                if nj:
                    dpr[ni] = nj
        l = set(dpr.keys())
    dpr = list(dpr.items())
    dpr.sort()
    for i,j in dpl.items():
        b = bisect.bisect_left(dpr,(i,j))
        if b >= len(dpr):
            continue
        if dpr[b][0] == i and j+dpr[b][1]:
            k = dpr[b][1]
            break
    else:
        print("No")
        return
    ans = []
    for i in range(n1):
        ans.append(a[i]*f[j%3])
        j //= 3
    for i in range(n2):
        ans.append(-a[i+n1]*f[k%3])
        k //= 3
    print("Yes")
    print(*ans)
    return

#Solve
if __name__ == "__main__":
    solve()
0