結果
問題 |
No.3017 交互浴
|
ユーザー |
|
提出日時 | 2025-01-25 19:02:33 |
言語 | Rust (1.83.0 + proconio) |
結果 |
AC
|
実行時間 | 290 ms / 2,000 ms |
コード長 | 880 bytes |
コンパイル時間 | 13,154 ms |
コンパイル使用メモリ | 383,364 KB |
実行使用メモリ | 7,168 KB |
最終ジャッジ日時 | 2025-01-26 00:02:36 |
合計ジャッジ時間 | 32,849 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 55 |
ソースコード
use proconio::input; const INF: i64 = 1 << 60; fn main() { input! { n: usize, h: [i64; n], } let mut stack = vec![(INF, 1)]; let mut water = 0; let mut green = 0; for (i, &h_i) in h.iter().enumerate() { while let Some(&(top_h, top_c)) = stack.last() { if top_h > h_i { break; } stack.pop(); if top_c == 0 { water -= top_h; } else { green -= top_h; } } if let Some(&(_, top_c)) = stack.last() { if top_c != i % 2 { stack.push((h_i, i % 2)); if i % 2 == 0 { water += h_i; } else { green += h_i; } } } println!("{}", (water - green).max(0)); } }