結果
問題 |
No.3289 Make More Happy Connection
|
ユーザー |
![]() |
提出日時 | 2025-10-18 11:35:59 |
言語 | Rust (1.83.0 + proconio) |
結果 |
WA
|
実行時間 | - |
コード長 | 954 bytes |
コンパイル時間 | 11,727 ms |
コンパイル使用メモリ | 398,080 KB |
実行使用メモリ | 28,936 KB |
最終ジャッジ日時 | 2025-10-18 11:36:15 |
合計ジャッジ時間 | 15,965 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 21 WA * 3 |
ソースコード
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 { for j in 0..2 { for k in 0..2 { dp[i + 1][k] = dp[i + 1][k].max(dp[i][j]); } } let (x, y) = xy[i]; let (x1, y1) = xy[i + 1]; let c = if x == y { x } else { 0 }; 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); }