結果
問題 |
No.5001 排他的論理和でランニング
|
ユーザー |
![]() |
提出日時 | 2018-03-17 01:07:17 |
言語 | Rust (1.83.0 + proconio) |
結果 |
AC
|
実行時間 | 77 ms / 1,500 ms |
コード長 | 1,430 bytes |
コンパイル時間 | 1,188 ms |
実行使用メモリ | 24,796 KB |
スコア | 25,033,575 |
最終ジャッジ日時 | 2020-03-12 19:49:05 |
ジャッジサーバーID (参考情報) |
judge8 / |
純コード判定しない問題か言語 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 50 |
コンパイルメッセージ
warning: variable `v` is assigned to, but never used --> Main.rs:28:13 | 28 | let mut v = 0; | ^ | = note: `#[warn(unused_variables)]` on by default = note: consider using `_v` instead
ソースコード
use std::io::{stdin, Read}; fn main() { let mut buf = String::new(); stdin().read_to_string(&mut buf).unwrap(); let mut buf = buf.split_whitespace(); let mut get = || buf.next().unwrap().parse::<i32>().unwrap(); let n = get() as usize; let m = get() as usize; let mut xs = vec![]; let mut ys = vec![vec![]; 32]; let mut zs = vec![vec![]; n]; for _ in 0..n { xs.push(get()); } xs.sort(); for j in 0..n { let x = xs[j]; for i in 0..32 { if (x & (1 << i)) > 0 { ys[i].push(j); zs[j].push(i); } } } let mut fs = vec![false; n]; let mut bs = vec![0; 32]; let mut ans = vec![]; let mut v = 0; for i in 0..32 { let i = 31 - i; for &j in ys[i].iter() { if fs[j] { continue; } let x = xs[j]; fs[j] = true; v |= x; ans.push(x); for &k in zs[j].iter() { bs[k] += 1; } } } for i in 0..n { if fs[i] { continue; } let x = xs[i]; fs[i] = true; v |= x; ans.push(x); for &k in zs[i].iter() { bs[k] += 1; } } output(m, &ans); } fn output(m: usize, ans: &Vec<i32>) { for i in 0..m { if i > 0 { print!(" "); } print!("{}", ans[i]); } println!(); }