結果
問題 | No.2819 Binary Binary-Operator |
ユーザー |
|
提出日時 | 2024-07-26 23:45:39 |
言語 | Rust (1.83.0 + proconio) |
結果 |
AC
|
実行時間 | 25 ms / 2,000 ms |
コード長 | 2,001 bytes |
コンパイル時間 | 27,455 ms |
コンパイル使用メモリ | 399,448 KB |
実行使用メモリ | 25,496 KB |
平均クエリ数 | 3.00 |
最終ジャッジ日時 | 2024-07-26 23:46:12 |
合計ジャッジ時間 | 19,380 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 64 |
ソースコード
#![allow( non_snake_case, unused_variables, unused_assignments, unused_mut, unused_imports, unused_macros, dead_code )] use proconio::input_interactive; use std::cmp::*; use std::collections::*; macro_rules! debug { ($($a:expr),* $(,)*) => { #[cfg(debug_assertions)] eprintln!(concat!($("| ", stringify!($a), "={:?} "),*, "|"), $(&$a),*); }; } fn main() { input_interactive! {x:usize,y:usize} // 出力qのパターンを総当たりしてみる。n=4でいけそう? for q in 0..16 { let mut v = vec![0; 4]; for i in 0..4 { if q & (1 << i) != 0 { v[i] = 1; } } // return valueがそれぞれの時について、確定するかどうかを考える。 // 成立パターンが存在すること。 // 他方の値にならないこと。 let mut valid_count = 0; let mut valid_set = vec![vec![]; 2]; for pat in 0..16 { let mut p = vec![vec![0; 2]; 2]; p[0][0] = if pat & (1 << 0) != 0 { 1 } else { 0 }; p[0][1] = if pat & (1 << 1) != 0 { 1 } else { 0 }; p[1][0] = if pat & (1 << 2) != 0 { 1 } else { 0 }; p[1][1] = if pat & (1 << 3) != 0 { 1 } else { 0 }; let mut tmp = v[0]; for i in 1..v.len() { tmp = p[tmp][v[i]]; } valid_set[tmp].push(p[x][y]); } valid_set[0].sort(); valid_set[1].sort(); valid_set[0].dedup(); valid_set[1].dedup(); if valid_set[0].len() == 1 && valid_set[1].len() == 1 && valid_set[0] != valid_set[1] { println!("4\n{} {} {} {}", v[0],v[1],v[2],v[3]); input_interactive!{val:usize} println!("{}",valid_set[val][0]); return; } } }