結果
問題 | No.954 Result |
ユーザー | manta1130 |
提出日時 | 2019-12-17 23:39:52 |
言語 | Rust (1.83.0 + proconio) |
結果 |
WA
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 3,832 bytes |
コンパイル時間 | 13,480 ms |
コンパイル使用メモリ | 401,880 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-11-22 17:25:08 |
合計ジャッジ時間 | 15,041 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 7 |
other | AC * 28 WA * 1 |
コンパイルメッセージ
warning: constant `INF` is never used --> src/main.rs:111:7 | 111 | const INF: usize = 1_000_000_007; | ^^^ | = note: `#[warn(dead_code)]` on by default
ソースコード
// ____ _ _ _ _ // | _ \ _ _ ___| |_ ___ _ __ | |_ ___ _ __ ___ _ __ | | __ _| |_ ___ // | |_) | | | / __| __| / __| '_ \ | __/ _ \ '_ ` _ \| '_ \| |/ _` | __/ _ \ // | _ <| |_| \__ \ |_ | (__| |_) | | || __/ | | | | | |_) | | (_| | || __/ // |_| \_\\__,_|___/\__| \___| .__/___\__\___|_| |_| |_| .__/|_|\__,_|\__\___| // |_| |_____| |_| //https://github.com/manta1130/Competitive_Programming_Template_Rust #[macro_use] mod input { use std; use std::io; const SPLIT_DELIMITER: char = ' '; #[macro_export] #[allow(unused_macros)] macro_rules! input { ( $($x:expr ),*) => { { let temp_str = input_line_str(); let mut split_result_iter = temp_str.split_whitespace(); $( let buf_split_result = split_result_iter.next(); let buf_split_result = buf_split_result.unwrap(); ($x) = buf_split_result.parse().unwrap(); )* } }; } #[allow(dead_code)] pub fn input_line_str() -> String { let mut s = String::new(); io::stdin().read_line(&mut s).unwrap(); s.trim().to_string() } #[allow(dead_code)] pub fn p<T>(t: T) where T: std::fmt::Display, { println!("{}", t); } #[allow(dead_code)] pub fn input_vector2d<T>(line: usize) -> Vec<Vec<T>> where T: std::str::FromStr, { let mut v: Vec<Vec<T>> = Vec::new(); for _ in 0..line { let vec_line = input_vector(); v.push(vec_line); } v } #[allow(dead_code)] pub fn input_vector<T>() -> Vec<T> where T: std::str::FromStr, { let mut v: Vec<T> = Vec::new(); let s = input_line_str(); let split_result = s.split(SPLIT_DELIMITER); for z in split_result { let buf = match z.parse() { Ok(r) => r, Err(_) => panic!("Parse Error"), }; v.push(buf); } v } #[allow(dead_code)] pub fn input_vector_row<T>(n: usize) -> Vec<T> where T: std::str::FromStr, { let mut v = Vec::with_capacity(n); for _ in 0..n { let buf = match input_line_str().parse() { Ok(r) => r, Err(_) => panic!("Parse Error"), }; v.push(buf); } v } pub trait ToCharVec { fn to_charvec(&self) -> Vec<char>; } impl ToCharVec for String { fn to_charvec(&self) -> Vec<char> { self.to_string().chars().collect::<Vec<_>>() } } } use input::*; const INF: usize = 1_000_000_007; fn main() { let mut v = input_vector_row::<usize>(5); v.reverse(); let mut fibo = vec![1, 1_usize]; for i in 0..100 { let buf = fibo[i] + fibo[i + 1]; fibo.push(buf); if buf > 1_000_000_000_000_000 { break; } } let mut table = vec![]; for i in 0..5 { table.push(fibo.iter().position(|&x| x == v[i])); } let mut ans = vec![if let Some(_) = table[0] { 1 } else { 0 }]; for i in (0..5).rev() { if let Some(x) = table[i] { if x == 0 { table[i] = Some(1); break; } } } for i in 1..5 { let buf = *ans.last().unwrap(); ans.push(if let None = table[i - 1] { 0 } else if let None = table[i] { 0 } else if table[i - 1].unwrap() + 1 == table[i].unwrap() { buf + 1 } else { 0 }); } //println!("{:?}", &ans); p(ans.iter().max().unwrap()); }