結果

問題 No.3223 K-XOR Increasing Sequence
ユーザー Nauclhlt🪷
提出日時 2025-07-05 18:05:00
言語 Python3
(3.13.1 + numpy 2.2.1 + scipy 1.14.1)
結果
WA  
実行時間 -
コード長 1,839 bytes
コンパイル時間 290 ms
コンパイル使用メモリ 12,288 KB
実行使用メモリ 16,768 KB
最終ジャッジ日時 2025-07-06 17:58:38
合計ジャッジ時間 7,288 ms
ジャッジサーバーID
(参考情報)
judge1 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2 WA * 1
other AC * 5 WA * 3 TLE * 1 -- * 60
権限があれば一括ダウンロードができます

ソースコード

diff #

def solve():
    N, K, X, Y = map(int, input().split())
    
    # 基本ケース
    if N == 1:
        print("Yes")
        print(str(X))
        return
    
    # K=1の場合(コーナーケース)
    if K == 1:
        # 条件は A[i-1] < A[i] for i = 2, 3, ..., N
        # つまり単調増加
        if X >= Y:
            print("No")
            return
        
        A = [0] * N
        A[0] = X
        A[N-1] = Y
        
        # 中間を単調増加で埋める
        for i in range(1, N-1):
            A[i] = X + i
            if A[i] >= Y or A[i] >= 2**20:
                print("No")
                return
        
        print("Yes")
        print(' '.join(map(str, A)))
        return
    
    # メイン処理: K >= 2
    # 戦略:末項を除く連続K項のXORを0にする
    
    A = [0] * N
    A[0] = X
    A[N-1] = Y
    
    # A[1] から A[K-1] まで適当に決める
    for i in range(1, min(K, N-1)):
        A[i] = 1
    
    # A[K] から A[N-2] まで、XOR制約を満たすように決める
    for i in range(K, N-1):
        # A[i-K+1] から A[i] までの連続K項のXORを0にする
        # A[i-K+1] ^ A[i-K+2] ^ ... ^ A[i-1] ^ A[i] = 0
        # よって A[i] = A[i-K+1] ^ A[i-K+2] ^ ... ^ A[i-1]
        
        xor_val = 0
        for j in range(i - K + 1, i):
            xor_val ^= A[j]
        
        A[i] = xor_val
        
        # 制約チェック
        if A[i] == 0 or A[i] >= 2**20:
            print("No")
            return
    
    # 最終チェック:すべての条件を満たすか確認
    for i in range(K, N):
        xor_val = 0
        for j in range(i - K, i):
            xor_val ^= A[j]
        
        if xor_val >= A[i]:
            print("No")
            return
    
    print("Yes")
    print(' '.join(map(str, A)))

solve()
0