#![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; } } }