use std::io;
use std::cmp::max;
fn main() {
let stdin = io::stdin();
let mut input: Vec<Vec<i32>> = Vec::new();
for line in stdin.lines() {
input.push(line.unwrap().split_whitespace().map(|x| x.parse::<i32>().unwrap() as i32).collect());
}
// reading input and storing into vec<vec<int>> is done now
for i in 0..input.len() {
input[i] = input[i][1..input[i].len()].to_vec();
}
input[0] = vec![0; input[0][0] as usize];
let mut ret: i64 = 0;
let mut prev_audience : Vec<i32> = Vec::new();
let mut prev_day_graph : Vec<i32> = Vec::new();
while input.len() > 0 {
let day_graph: Vec<i32> = input.pop().unwrap();
if day_graph.len() > 0 {
let mut audience: Vec<i32> = vec![1; day_graph.len() as usize];
for i in 0..prev_audience.len() {
let a: i32 = prev_day_graph[i];
if a != 0 {
audience[(a-1) as usize] += prev_audience[i];
}
}
prev_audience = audience.clone().into_iter().map(|x| if x > 1 { x-1 } else { x }).collect();
prev_day_graph = day_graph.clone();
let prev_audience_sum: i64 = prev_audience.clone().into_iter().reduce(|x,y| x + y).unwrap().into();
ret = max(ret, prev_audience_sum);
}
}
print!("{}", ret);
}
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 | use std::io; use std::cmp::max; fn main() { let stdin = io::stdin(); let mut input: Vec<Vec<i32>> = Vec::new(); for line in stdin.lines() { input.push(line.unwrap().split_whitespace().map(|x| x.parse::<i32>().unwrap() as i32).collect()); } // reading input and storing into vec<vec<int>> is done now for i in 0..input.len() { input[i] = input[i][1..input[i].len()].to_vec(); } input[0] = vec![0; input[0][0] as usize]; let mut ret: i64 = 0; let mut prev_audience : Vec<i32> = Vec::new(); let mut prev_day_graph : Vec<i32> = Vec::new(); while input.len() > 0 { let day_graph: Vec<i32> = input.pop().unwrap(); if day_graph.len() > 0 { let mut audience: Vec<i32> = vec![1; day_graph.len() as usize]; for i in 0..prev_audience.len() { let a: i32 = prev_day_graph[i]; if a != 0 { audience[(a-1) as usize] += prev_audience[i]; } } prev_audience = audience.clone().into_iter().map(|x| if x > 1 { x-1 } else { x }).collect(); prev_day_graph = day_graph.clone(); let prev_audience_sum: i64 = prev_audience.clone().into_iter().reduce(|x,y| x + y).unwrap().into(); ret = max(ret, prev_audience_sum); } } print!("{}", ret); } |
English