結果

問題 No.1017 Reiwa Sequence
ユーザー Shinya Fujita
提出日時 2024-10-08 23:04:12
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 1,161 bytes
コンパイル時間 333 ms
コンパイル使用メモリ 82,308 KB
実行使用メモリ 114,684 KB
最終ジャッジ日時 2024-10-08 23:04:55
合計ジャッジ時間 38,956 ms
ジャッジサーバーID
(参考情報)
judge5 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 45 WA * 5
権限があれば一括ダウンロードができます

ソースコード

diff #

N = int(input())
A = list(map(int, input().split()))

M = 150001
exist = [-1] * M
for i, ai in enumerate(A):
    if exist[ai] != -1:
        ans = [0] * N
        ans[i] = -ai
        ans[exist[ai]] = ai
        print('Yes')
        print(*ans)
        quit()
    
    exist[ai] = i


order = sorted(range(N), key=lambda i:A[i])
dp = [[0]*2*M]
dp[0][0] = 1
for pos, i in enumerate(order):
    ai = A[i]
    if dp[-1][ai]:
        print('Yes')
        ans = [0] * N
        ans[i] = -ai
        now = ai
        for ii in order[:pos][::-1]:
            dp.pop()
            aii = A[ii]
            if dp[-1][now]:
                continue
            if -M+1 <= now - aii and dp[-1][now-aii]:
                now -= aii
                ans[ii] = aii
                continue
            if now + aii < M and dp[-1][now+aii]:
                now += aii
                ans[ii] = -aii
        print(*ans)
        quit()
    nex = [0] * 2*M
    for j in range(-M+1, M):
        nex[j] |= dp[-1][j]
        if dp[-1][j]:
            if -M+1 <= j-ai:
                nex[j-ai] = 1
            if j+ai < M:
                nex[j+ai] = 1
    dp.append(nex)

print('No')
0