結果
| 問題 | No.116 門松列(1) |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2019-04-21 13:22:55 |
| 言語 | Rust (1.83.0 + proconio) |
| 結果 |
AC
|
| 実行時間 | 1 ms / 5,000 ms |
| コード長 | 1,204 bytes |
| 記録 | |
| コンパイル時間 | 14,020 ms |
| コンパイル使用メモリ | 379,384 KB |
| 実行使用メモリ | 5,376 KB |
| 最終ジャッジ日時 | 2024-06-25 01:53:13 |
| 合計ジャッジ時間 | 13,300 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 21 |
ソースコード
use std::io::stdin;
/// エントリポイント
fn main() {
let input = read_lines();
println!("{}", pine_decoration(input));
}
/// 標準入力から文字列を取得します。
fn read_lines() -> String {
// 1行目は不要
let mut str1 = String::new();
stdin().read_line(&mut str1).unwrap();
let mut str2 = String::new();
stdin().read_line(&mut str2).unwrap();
str2
}
/// 竹の高さが門松の列になっている個数を返します。
fn pine_decoration(bamboo_heights: String) -> i32 {
let h = bamboo_heights
.trim()
.split_whitespace()
.collect::<Vec<&str>>()
.iter()
// Vec<&str> を Vec<i32> に変換
.map(|&x| x.parse().unwrap())
.collect::<Vec<i32>>();
// 門松の判定
let mut count = 0;
for i in 1..(h.len() - 1) {
// いずれかが同じ高さ
if h[i - 1] == h[i] || h[i] == h[i + 1] || h[i - 1] == h[i + 1] {
continue;
}
// 中央が2番目の高さではない
if (h[i - 1] > h[i] && h[i] > h[i + 1]) || (h[i - 1] < h[i] && h[i] < h[i + 1]) {
continue;
}
count += 1;
}
count
}