Open2

Rustで競プロする

ardririyardririy

標準入力

これはproconioを使えばいい.

  • 基本
input! {
    n: usize,
    m: usize,
        
    // 1次元配列
    a: [usize;m],    
    // 2次元配列(n * m)
    b: [[usize; m]; n],
}
  • Stringで与えられる配列をCharの配列にする
input! {
    s : String,
}

let char_vec: Vec<char> = s.chars().collect();

二次元配列にしたい場合はいったんStringの配列で受け取ってから下のようにすればいい

let b: Vec<Vec<char>> = Vec::new();
for s in b_string.iter() {
    let chars: Vec<char> = s.chars().collect();
    b.push(chars);
}
ardririyardririy

二分探索

let (Ok(idx) | Err(idx)) = vec.binary_search(&(key));

vecが配列.VScode上でエラーを吐くのはバージョンの問題?AtCoderのコードテストでは動く. バージョンの問題ですありがとうございました.

C++でのlower_bound()と似ているけど,返されるのは要素のインデックス(ありがたい).


配列上の最大値よりも大きい時 -> ワカラン考慮するべき時は↓みたいな書き方でよさそう
https://atcoder.jp/contests/typical-algorithm/submissions/46174145