結果
| 問題 |
No.150 "良問"(良問とは言っていない
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2020-07-09 21:05:06 |
| 言語 | Rust (1.83.0 + proconio) |
| 結果 |
AC
|
| 実行時間 | 3 ms / 5,000 ms |
| コード長 | 1,358 bytes |
| コンパイル時間 | 13,757 ms |
| コンパイル使用メモリ | 387,716 KB |
| 実行使用メモリ | 6,820 KB |
| 最終ジャッジ日時 | 2024-10-08 07:38:57 |
| 合計ジャッジ時間 | 15,006 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 20 |
ソースコード
use std::cmp::min;
fn main() {
let mut t = String::new();
std::io::stdin().read_line(&mut t).ok();
let t: usize = t.trim().parse().unwrap();
const ANSWER_LEN: usize = 11;
for _ in 0..t {
let mut s = String::new();
std::io::stdin().read_line(&mut s).ok();
let s: &str = s.trim();
let slen = s.len();
let mut good: Vec<usize> = vec![ANSWER_LEN; slen];
let mut problems: Vec<usize> = vec![ANSWER_LEN; slen];
for i in 0..slen-3 {
good[i] = s.chars()
.skip(i)
.take(4)
.zip("good".chars())
.filter(|pair| pair.0 != pair.1)
.count()
+ 7
;
if i > 0 {
good[i] = min(good[i], good[i-1]);
}
}
for i in (0..slen-6).rev() {
problems[i] = s.chars()
.skip(i)
.take(7)
.zip("problem".chars())
.filter(|pair| pair.0 != pair.1)
.count()
+ 4
;
problems[i] = min(problems[i], problems[i+1]);
}
let mut result: usize = 11;
for i in 0..slen-ANSWER_LEN+1 {
result = min(result, good[i] + problems[i+4] - 11);
}
println!("{}", result);
}
}