結果

問題 No.3289 Make More Happy Connection
ユーザー Plan8
提出日時 2025-10-18 11:37:32
言語 Rust
(1.83.0 + proconio)
結果
AC  
実行時間 57 ms / 2,000 ms
コード長 958 bytes
コンパイル時間 11,633 ms
コンパイル使用メモリ 398,868 KB
実行使用メモリ 28,960 KB
最終ジャッジ日時 2025-10-18 11:37:46
合計ジャッジ時間 13,162 ms
ジャッジサーバーID
(参考情報)
judge3 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 24
権限があれば一括ダウンロードができます

ソースコード

diff #

use proconio::input;

fn main() {
    input! {
        n: usize,
        xy: [(u64, u64); n],
    }
    let mut dp = vec![vec![0; 2]; n + 1];
    if xy[0].0 == xy[0].1 {
        dp[0][0] = xy[0].0;
        dp[0][1] = xy[0].0;
    }

    for i in 0..n - 1 {
        let (x, y) = xy[i];
        let c = if x == y { x } else { 0 };
        for j in 0..2 {
            for k in 0..2 {
                dp[i + 1][k] = dp[i + 1][k].max(dp[i][j] + c);
            }
        }
        let (x1, y1) = xy[i + 1];

        if x == x1 {
            dp[i + 1][0] = dp[i + 1][0].max(dp[i][1] + c + x);
        }
        if y == x1 {
            dp[i + 1][0] = dp[i + 1][0].max(dp[i][0] + c + y);
        }
        if x == y1 {
            dp[i + 1][1] = dp[i + 1][1].max(dp[i][1] + c + x);
        }
        if y == y1 {
            dp[i + 1][1] = dp[i + 1][1].max(dp[i][0] + c + y);
        }
    }
    let ans = dp[n - 1][0].max(dp[n - 1][1]);
    println!("{}", ans);
}
0