結果
問題 |
No.3289 Make More Happy Connection
|
ユーザー |
![]() |
提出日時 | 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 |
ソースコード
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); }