結果
問題 | No.1965 Heavier |
ユーザー |
|
提出日時 | 2022-09-13 11:04:40 |
言語 | Rust (1.83.0 + proconio) |
結果 |
AC
|
実行時間 | 27 ms / 2,000 ms |
コード長 | 1,203 bytes |
コンパイル時間 | 12,467 ms |
コンパイル使用メモリ | 390,424 KB |
実行使用メモリ | 9,344 KB |
最終ジャッジ日時 | 2024-11-30 14:12:00 |
合計ジャッジ時間 | 14,480 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 26 |
ソースコード
fn main() {let mut n = String::new();std::io::stdin().read_line(&mut n).ok();let n: usize = n.trim().parse().unwrap();let mut a = String::new();std::io::stdin().read_line(&mut a).ok();let a: Vec<usize> = a.trim().split_whitespace().map(|s| s.parse().unwrap()).collect();let mut b = String::new();std::io::stdin().read_line(&mut b).ok();let b: Vec<usize> = b.trim().split_whitespace().map(|s| s.parse().unwrap()).collect();let mut result = 0usize;let mut ok = vec![false; n-1];for i in 0..n-1 {let minval = b[i].min(b[i+1]);let maxval = b[i].max(b[i+1]);ok[i] = a[i] + maxval < a[i+1] + minval;if ok[i] {result += 1;}}let mut idx = 0usize;for i in 0..n-1 {if !ok[i] {continue;}idx = idx.max(i+2);while idx < n {let minval = b[i].min(b[idx]);let maxval = b[i].max(b[idx]);if ok[idx-1] && a[i] + maxval < a[idx] + minval {idx += 1;} else {break;}}result += idx - i - 2;}println!("{}", result);}