b.rs (627B)
1 use std::cmp::Ordering; 2 mod common; 3 use common::*; 4 5 fn driver(n: i64) -> Packet { 6 Packet::List(vec![Packet::List(vec![Packet::Number(n)])]) 7 } 8 9 fn find_driver(v: &Vec<Packet>, n: i64) -> usize { 10 v.iter() 11 .position(|p| compare(p, &driver(n)) == Ordering::Equal) 12 .unwrap() + 1 13 } 14 15 fn main() { 16 let mut v = vec![driver(2), driver(6)]; 17 let mut line = String::new(); 18 while std::io::stdin().read_line(&mut line).unwrap() > 0 { 19 if line.len() > 1 { v.push(parse(line.as_bytes())); } 20 line.clear(); 21 } 22 23 v.sort_by(compare); 24 25 println!("{}", find_driver(&v, 2) * find_driver(&v, 6)); 26 }