結果
問題 | No.871 かえるのうた |
ユーザー |
![]() |
提出日時 | 2019-09-08 00:39:14 |
言語 | Rust (1.83.0 + proconio) |
結果 |
AC
|
実行時間 | 24 ms / 2,000 ms |
コード長 | 1,150 bytes |
コンパイル時間 | 12,956 ms |
コンパイル使用メモリ | 384,664 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-11-30 10:56:14 |
合計ジャッジ時間 | 14,567 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 49 |
ソースコード
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 l = k;let mut r = k;let mut left = x[k] - a[k];let mut right = x[k] + a[k];let mut update = true;while update {update = false;// 左側のアップデートwhile l > 0 && left <= x[l-1] {update = true;left = min(x[l-1] - a[l-1], left);right = max(x[l-1] + a[l-1], right);l -= 1;//println!("{}", l);}while r + 1 < n && right >= x[r+1] {update = true;left = min(x[r+1] - a[r+1], left);right = max(x[r+1] + a[r+1], right);r += 1;//println!("{}", r);}//println!("l = {}, r = {}", l, r);}println!("{}", r - l +1);}