結果

問題 No.3685 ワロングアンサーやんけ!
コンテスト
ユーザー urectanc
提出日時 2026-09-05 15:43:09
言語 Rust
(1.97.1 + proconio + num + itertools)
コンパイル:
/usr/bin/rustc_custom
実行:
./target/release/main
結果
AC  
実行時間 53 ms / 2,000 ms
+ 365µs
コード長 1,217 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 2,723 ms
コンパイル使用メモリ 188,336 KB
実行使用メモリ 6,272 KB
最終ジャッジ日時 2026-09-05 15:43:18
合計ジャッジ時間 5,579 ms
ジャッジサーバーID
(参考情報)
judge4_0 / judge5_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 32
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

use proconio::{fastout, input, marker::Chars};

#[fastout]
fn main() {
    input! { t: usize }

    for _ in 0..t {
        let ans = solve();
        println!("{ans}");
    }
}

fn solve() -> String {
    input! {
        r: Chars,
        s: String,
        k: usize,
    }

    let n = r.len();
    let mut ans = r.clone();
    if s == "Warong" {
        let contains_w = r.iter().any(|&r| r == 'W');
        for i in 0..k {
            assert_ne!(ans[i], 'W');
            ans[i] = 'A';
        }
        if let Some(i) = (k..n).find(|&i| ans[i] == '?') {
            if !contains_w && (i + 1..n).all(|j| ans[j] != '?') {
                ans[i] = 'W';
            }
        }
    } else {
        if (0..k).all(|i| ans[i] == 'A') {
            for i in k..n {
                assert_ne!(ans[i], 'W');
                ans[i] = 'A';
            }
        } else {
            let count = (0..k).filter(|&i| r[i] == 'A').count();
            let contains_w = r[k..].iter().any(|&r| r == 'W');
            if let Some(i) = (0..k).find(|&i| ans[i] == '?') {
                if count == k - 1 && contains_w {
                    ans[i] = 'W';
                }
            }
        }
    }

    ans.iter().collect()
}
0