結果

問題 No.1017 Reiwa Sequence
ユーザー 👑 SPD_9X2
提出日時 2025-07-16 01:15:53
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 936 ms / 2,000 ms
コード長 2,186 bytes
コンパイル時間 329 ms
コンパイル使用メモリ 82,100 KB
実行使用メモリ 282,588 KB
最終ジャッジ日時 2025-07-16 01:16:32
合計ジャッジ時間 34,685 ms
ジャッジサーバーID
(参考情報)
judge5 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 50
権限があれば一括ダウンロードができます

ソースコード

diff #

"""

https://yukicoder.me/problems/no/1017

300000ペア以上あれば、必ず衝突する

長さ600以下の場合、ちゃんと考えないとダメか?
dpして復元かなぁ...
しかし、A[i]が大きい場合に苦しい

3つ、4つと増やしていけばいいか
重複はない

"""

import sys

N = int(input())

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

dic = {}

def check( pos ):
    s = 0
    for p in pos:
        s += A[p]
    if s in dic:
        ans = [0] * N
        for p in dic[s]:
            ans[p] = -1 * A[p]
        for p in pos:
            ans[p] = 1 * A[p]

        print ("Yes")
        print (*ans)
        sys.exit()

    dic[s] = pos

for i in range(N):
    check( (i,) )

for i in range(N):
    for j in range(i):
        check( (i,j) )

for i in range(N):
    for j in range(i):
        for k in range(j):
            check( (i,j,k) )

for i in range(N):
    for j in range(i):
        for k in range(j):
            for l in range(k):
                check( (i,j,k,l) )


for i in range(N):
    for j in range(i):
        for k in range(j):
            for l in range(k):
                for m in range(l):
                    check( (i,j,k,l,m) )


for i in range(N):
    for j in range(i):
        for k in range(j):
            for l in range(k):
                for m in range(l):
                    for x in range(m):
                        check( (i,j,k,l,m,x) )


for i in range(N):
    for j in range(i):
        for k in range(j):
            for l in range(k):
                for m in range(l):
                    for x in range(m):
                        for y in range(x):
                            check( (i,j,k,l,m,x,y) )


for i in range(N):
    for j in range(i):
        for k in range(j):
            for l in range(k):
                for m in range(l):
                    for x in range(m):
                        for y in range(x):
                            for z in range(y):
                                check( (i,j,k,l,m,x,y,z) )


for bit in range(2**N):
    pos = []
    for i in range(N):
        if (2**i) & bit:
            pos.append(i)
    if len(pos) > 8:
        check( tuple(pos) )

print ("No")

0