結果
問題 |
No.871 かえるのうた
|
ユーザー |
![]() |
提出日時 | 2019-09-08 00:16:49 |
言語 | Rust (1.83.0 + proconio) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,232 bytes |
コンパイル時間 | 16,386 ms |
コンパイル使用メモリ | 377,612 KB |
実行使用メモリ | 5,948 KB |
最終ジャッジ日時 | 2024-06-27 14:13:59 |
合計ジャッジ時間 | 15,295 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 45 WA * 4 |
ソースコード
use std::vec::Vec; use std::cmp::min; use std::cmp::max; fn read<T: std::str::FromStr>() -> T { let mut s = String::new(); std::io::stdin().read_line(&mut s).ok(); s.trim().parse().ok().unwrap() } fn read_vec<T: std::str::FromStr>() -> Vec<T> { read::<String>().split_whitespace().map(|e| e.parse().ok().unwrap()).collect() } fn main() { let (n, k) = { let v: Vec<usize> = read_vec(); (v[0], v[1] - 1) }; let x: Vec<i64> = read_vec(); let a: Vec<i64> = read_vec(); let mut wave_range_right = x[k] + a[k]; let mut wave_range_left = x[k] - a[k]; // 右側のカエル for i in k+1..n { if wave_range_right >= x[i] { wave_range_right = max(wave_range_right, x[i] + a[i]); wave_range_left = min(wave_range_left, x[i] - a[i]); } } // 左側のカエル for i in (0..k).rev() { if wave_range_left <= x[i] { wave_range_right = max(wave_range_right, x[i] + a[i]); wave_range_left = min(wave_range_left, x[i] - a[i]); } } let mut ans = 0; for i in 0..n { if wave_range_left <= x[i] && x[i] <= wave_range_right { ans += 1; } } println!("{}", ans); //println!("{}", wave_range_left); //println!("{}", wave_range_right); }