結果

問題 No.1515 Making Many Multiples
ユーザー lam6er
提出日時 2025-04-16 00:59:05
言語 PyPy3
(7.3.15)
結果
TLE  
実行時間 -
コード長 1,653 bytes
コンパイル時間 149 ms
コンパイル使用メモリ 82,288 KB
実行使用メモリ 305,984 KB
最終ジャッジ日時 2025-04-16 01:00:23
合計ジャッジ時間 3,633 ms
ジャッジサーバーID
(参考情報)
judge1 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample -- * 3
other AC * 2 TLE * 1 -- * 25
権限があれば一括ダウンロードができます

ソースコード

diff #

def main():
    import sys
    input = sys.stdin.read().split()
    idx = 0
    N = int(input[idx]); idx +=1
    K = int(input[idx]); idx +=1
    X = int(input[idx]); idx +=1
    Y = int(input[idx]); idx +=1
    A = list(map(int, input[idx:idx+N]))
    
    X_mod = X % K
    Y_mod = Y % K
    if X_mod > Y_mod:
        X_mod, Y_mod = Y_mod, X_mod
    active = {(X_mod, Y_mod): 0}
    
    for a in A:
        c = a % K
        new_active = {}
        for (u, v), points in active.items():
            sum_three = (u + v + c) % K
            new_points = points + (1 if sum_three == 0 else 0)
            
            # Discard u
            new_u = min(v, c)
            new_v = max(v, c)
            key = (new_u, new_v)
            if key in new_active:
                if new_points > new_active[key]:
                    new_active[key] = new_points
            else:
                new_active[key] = new_points
            
            # Discard v
            new_u = min(u, c)
            new_v = max(u, c)
            key = (new_u, new_v)
            if key in new_active:
                if new_points > new_active[key]:
                    new_active[key] = new_points
            else:
                new_active[key] = new_points
            
            # Discard c
            key = (u, v)
            if key in new_active:
                if new_points > new_active[key]:
                    new_active[key] = new_points
            else:
                new_active[key] = new_points
        active = new_active
    
    if not active:
        print(0)
    else:
        print(max(active.values()))

if __name__ == "__main__":
    main()
0