in contests/abc223/abc223_c.rs [5:49]
fn main() {
input! {
N: u32,
X: [[u32; 2]; N]
}
let mut line_length = 0;
for x in &X {
line_length += x[0];
}
let divide_second = 1000000.;
let mut left_fired_length = 0.;
let mut left_line_index = 0;
let mut left_throw_length = X[0][0];
let mut left_speed_per_nanoseconds = X[0][1] as f64 / divide_second;
let mut right_fired_length = 0.;
let mut right_line_index = 0;
let mut right_throw_length = X[N as usize - 1][0];
let mut right_speed_per_nanoseconds = X[N as usize - 1][1] as f64 / divide_second;
loop {
if left_fired_length + right_fired_length > line_length as f64 {
break;
}
if (left_throw_length as f64) < left_fired_length {
left_line_index += 1;
left_throw_length += X[left_line_index][0];
left_speed_per_nanoseconds = X[left_line_index][1] as f64 / divide_second;
}
left_fired_length += left_speed_per_nanoseconds;
if (right_throw_length as f64) < right_fired_length {
right_line_index += 1;
right_throw_length += X[N as usize - 1 - right_line_index as usize][0];
right_speed_per_nanoseconds =
X[N as usize - 1 - right_line_index as usize][1] as f64 / divide_second;
}
right_fired_length += right_speed_per_nanoseconds;
}
println!("{}", left_fired_length);
}