Submission #1202462
Source Code Expand
#[allow(unused_imports)] use std::cmp::*; #[allow(unused_imports)] use std::collections::*; use std::io::Read; #[allow(dead_code)] fn getline() -> String { let mut ret = String::new(); std::io::stdin().read_line(&mut ret).ok().unwrap(); ret } fn get_word() -> String { let mut stdin = std::io::stdin(); let mut u8b: [u8; 1] = [0]; loop { let mut buf: Vec<u8> = Vec::with_capacity(16); loop { let res = stdin.read(&mut u8b); if res.unwrap_or(0) == 0 || u8b[0] <= b' ' { break; } else { buf.push(u8b[0]); } } if buf.len() >= 1 { let ret = String::from_utf8(buf).unwrap(); return ret; } } } #[allow(dead_code)] fn get<T: std::str::FromStr>() -> T { get_word().parse().ok().unwrap() } fn solve() { let n = get(); let a: Vec<i64> = (0 .. n).map(|_| get()).collect(); let mut goal = a.iter().fold(0, |x, &y| x ^ y); const B: usize = 32; let mut cnt = [0; B]; for v in a { if v == 0 { continue; } let diff = (v ^ (v - 1)).count_ones() as usize - 1; cnt[diff] += 1; } let mut tot = 0; for i in (0 .. B).rev() { if (goal & 1 << i) == 0 { continue; } if cnt[i] == 0 { // impossible println!("-1"); return; } goal ^= (1 << (i + 1)) - 1; tot += 1; } println!("{}", tot); } fn main() { // In order to avoid potential stack overflow, spawn a new thread. let stack_size = 104_857_600; // 100 MB let thd = std::thread::Builder::new().stack_size(stack_size); thd.spawn(|| solve()).unwrap().join().unwrap(); }
Submission Info
Submission Time | |
---|---|
Task | C - Cheating Nim |
User | kobae964 |
Language | Rust (1.15.1) |
Score | 500 |
Code Size | 1715 Byte |
Status | AC |
Exec Time | 45 ms |
Memory | 8572 KB |
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 500 / 500 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | example0.txt, example1.txt |
All | 000.txt, 001.txt, 002.txt, 003.txt, 004.txt, 005.txt, 006.txt, 007.txt, 008.txt, 009.txt, 010.txt, 011.txt, 012.txt, 013.txt, 014.txt, 015.txt, 016.txt, 017.txt, 018.txt, 019.txt, 020.txt, 021.txt, 022.txt, 023.txt, example0.txt, example1.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
000.txt | AC | 3 ms | 8572 KB |
001.txt | AC | 3 ms | 8572 KB |
002.txt | AC | 45 ms | 8572 KB |
003.txt | AC | 15 ms | 8572 KB |
004.txt | AC | 17 ms | 8572 KB |
005.txt | AC | 14 ms | 8572 KB |
006.txt | AC | 42 ms | 8572 KB |
007.txt | AC | 42 ms | 8572 KB |
008.txt | AC | 42 ms | 8572 KB |
009.txt | AC | 42 ms | 8572 KB |
010.txt | AC | 42 ms | 8572 KB |
011.txt | AC | 42 ms | 8572 KB |
012.txt | AC | 42 ms | 8572 KB |
013.txt | AC | 42 ms | 8572 KB |
014.txt | AC | 42 ms | 8572 KB |
015.txt | AC | 42 ms | 8572 KB |
016.txt | AC | 42 ms | 8572 KB |
017.txt | AC | 42 ms | 8572 KB |
018.txt | AC | 42 ms | 8572 KB |
019.txt | AC | 42 ms | 8572 KB |
020.txt | AC | 42 ms | 8572 KB |
021.txt | AC | 6 ms | 8572 KB |
022.txt | AC | 7 ms | 8572 KB |
023.txt | AC | 42 ms | 8572 KB |
example0.txt | AC | 3 ms | 8572 KB |
example1.txt | AC | 3 ms | 8572 KB |