結果
| 問題 | No.24 数当てゲーム | 
| コンテスト | |
| ユーザー |  yukyu | 
| 提出日時 | 2021-03-05 01:02:42 | 
| 言語 | Rust (1.83.0 + proconio) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 1 ms / 5,000 ms | 
| コード長 | 1,637 bytes | 
| コンパイル時間 | 13,369 ms | 
| コンパイル使用メモリ | 375,996 KB | 
| 実行使用メモリ | 5,248 KB | 
| 最終ジャッジ日時 | 2024-10-05 15:41:35 | 
| 合計ジャッジ時間 | 12,727 ms | 
| ジャッジサーバーID (参考情報) | judge1 / judge5 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 10 | 
ソースコード
use std::io::*;
use std::str::FromStr;
fn main() {
    let a: String = read();
    let n = a.parse::<i64>().unwrap();
    let mut result: Vec<Vec<i64>> = Vec::new();
    for _ in 0..n {
        let a = (0..5).map(|_| read()).collect::<Vec<String>>();
        let b = vec![
            i64::from_str(&a[0]).unwrap(),
            i64::from_str(&a[1]).unwrap(),
            i64::from_str(&a[2]).unwrap(),
            i64::from_str(&a[3]).unwrap(),
            if &a[4][..] == "YES" { 1 } else { 0 },
        ];
        result.push(b);
    }
    exec(result);
}
fn exec(l: Vec<Vec<i64>>) {
    let mut r: Vec<i64> = (0..10).collect();
    for i in l {
        if let 1 = &i[4] {
            r = include(i, r);
        } else {
            r = exclude(i, r);
        }
    }
    println!("{:?}", r[0]);
}
fn include(t: Vec<i64>, r: Vec<i64>) -> Vec<i64> {
    let mut result: Vec<i64> = Vec::new();
    for i in 0..r.len() {
        for _j in &t[0..4] {
            if &r[i] == _j {
                result.push(r[i]);
            }
        }
    }
    result
}
fn exclude(t: Vec<i64>, r: Vec<i64>) -> Vec<i64> {
    let mut result = r;
    for i in &t[0..4] {
        let arr: Vec<i64> = result.iter().filter(|&x| x != i).cloned().collect();
        result = arr;
    }
    result
}
fn read<T: FromStr>() -> T {
    let stdin = stdin();
    let stdin = stdin.lock();
    let token: String = stdin
        .bytes()
        .map(|c| c.expect("failed to read char") as char)
        .skip_while(|c| c.is_whitespace())
        .take_while(|c| !c.is_whitespace())
        .collect();
    token.parse().ok().expect("failed to parse token")
}
            
            
            
        