1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
use std::io::{self, Read, Write}; macro_rules! read_input_lines { ($buf:ident) => { { let mut stdin = io::stdin(); stdin.read_to_string(&mut $buf); &$buf.lines().collect::<Vec<_>>() } } } macro_rules! read_line_of_vars { ($type:ty, $lines:ident, $($var:ident),+) => { { let (line, rest) = $lines.split_first().unwrap(); $lines = rest; let parsed = line.trim().split_whitespace().map( |x| { x.parse::<$type>().unwrap() } ) .collect::<Vec<$type>>(); let parsed = &parsed[..]; $( match parsed.split_first() { None => { $var = parsed[0]; }, Some((value, parsed)) => { $var = *value; } } );+; {( $( $var ),+ )} } } }