結果
| 問題 | No.3114 0→1 |
| コンテスト | |
| ユーザー |
Alph(その辺の大学生A)
|
| 提出日時 | 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));
}
Alph(その辺の大学生A)