結果

問題 No.1017 Reiwa Sequence
ユーザー tassei903
提出日時 2025-03-14 15:31:04
言語 PyPy3
(7.3.15)
結果
TLE  
実行時間 -
コード長 1,485 bytes
コンパイル時間 658 ms
コンパイル使用メモリ 82,796 KB
実行使用メモリ 83,260 KB
最終ジャッジ日時 2025-03-14 15:31:19
合計ジャッジ時間 13,077 ms
ジャッジサーバーID
(参考情報)
judge4 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 5 TLE * 2 -- * 43
権限があれば一括ダウンロードができます

ソースコード

diff #

import sys
input = lambda :sys.stdin.readline()[:-1]
ni = lambda :int(input())
na = lambda :list(map(int,input().split()))
yes = lambda :print("yes");Yes = lambda :print("Yes");YES = lambda : print("YES")
no = lambda :print("no");No = lambda :print("No");NO = lambda : print("NO")
#######################################################################

def solve(a):
    n = len(a)
    m = sum(a) + 1
    dp = [0] *(n + 1)
    dp[0] = 1
    res1 = [0] * n
    res2 = [0] * n 
    for i in range(n):
        X =(dp[i] << a[i]) & dp[i] 
        if X:
            j = 0
            for k in range(m):
                if X >> k & 1:
                    j = k
                    break
            res1[i] = 1
            s = j - a[i]
            for ii in range(i-1, -1, -1):
                if dp[ii] >> s & 1:
                    res1[ii] = 0
                else:
                    res1[ii] = 1
                    s -= a[ii]
            
            res2[i] = 0
            s = j
            for ii in range(i-1, -1, -1):
                if dp[ii] >> s & 1:
                    res2[ii] = 0
                else:
                    res2[ii] = 1
                    s -= a[ii]
            
            return [(res1[i] - res2[i]) * a[i] for i in range(n)]
        dp[i+1] = (dp[i] << a[i]) | dp[i]
    return None
n = ni()
a = na()

if n >= 20:
    res = solve(a[:20]) + [0] * (n - 20)
else:
    res = solve(a)

if res != None:
    print("Yes")
    print(*res)
else:
    print("No")
0