結果
問題 |
No.3114 0→1
|
ユーザー |
![]() |
提出日時 | 2025-04-20 17:35:48 |
言語 | Rust (1.83.0 + proconio) |
結果 |
RE
|
実行時間 | - |
コード長 | 1,493 bytes |
コンパイル時間 | 14,543 ms |
コンパイル使用メモリ | 395,472 KB |
実行使用メモリ | 7,848 KB |
最終ジャッジ日時 | 2025-04-20 17:36:04 |
合計ジャッジ時間 | 15,684 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | RE * 3 |
other | RE * 30 |
コンパイルメッセージ
warning: function `out` is never used --> src/main.rs:3:4 | 3 | fn out(a: &[bool], k: usize) { | ^^^ | = note: `#[warn(dead_code)]` on by default
ソースコード
use std::io::{self, Write}; fn out(a: &[bool], k: usize) { for i in k - 1..a.len() { print!("{}", if a[i] { 1 } else { 0 }); } println!(); } fn to_bitarray(s: &str, s_arr: &mut Vec<bool>, k: usize, full_n: usize) { for i in 0..k - 1 { s_arr[i] = true; } for i in k - 1..full_n { s_arr[i] = s.chars().nth(i - k + 1).unwrap() == '1'; } } fn min_find(s: &str, n: usize, full_n: usize) -> usize { let weight_min = (n + 1) / 2; let mut change = 0; let mut h_weight = 0; let mut s_arr = vec![false; full_n]; let mut k_arr = vec![false; full_n]; to_bitarray(s, &mut s_arr, weight_min, full_n); k_arr.copy_from_slice(&s_arr); for i in 0..n { h_weight += if s_arr[i] { 1 } else { 0 }; } if h_weight < weight_min { s_arr[n - 1] = true; h_weight += 1; change += 1; } for i in 1..=full_n - n { h_weight -= if s_arr[i - 1] { 1 } else { 0 }; h_weight += if s_arr[i + n - 1] { 1 } else { 0 }; if h_weight < weight_min { s_arr[i + n - 1] = true; h_weight += 1; change += 1; } } change } fn main() { let mut input = String::new(); io::stdout().flush().unwrap(); io::stdin().read_line(&mut input).unwrap(); let n: usize = input.trim().parse().unwrap(); let mut s = String::new(); io::stdin().read_line(&mut s).unwrap(); println!("{}", min_find(&s.trim(), n, 3)); }