結果
| 問題 |
No.1082 XORのXOR
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-06-02 23:48:30 |
| 言語 | Rust (1.83.0 + proconio) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,788 bytes |
| コンパイル時間 | 30,222 ms |
| コンパイル使用メモリ | 394,848 KB |
| 実行使用メモリ | 7,848 KB |
| 最終ジャッジ日時 | 2025-06-02 23:49:02 |
| 合計ジャッジ時間 | 16,523 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | WA * 3 |
| other | WA * 29 |
コンパイルメッセージ
warning: unused imports: `HashMap` and `HashSet`
--> src/main.rs:3:24
|
3 | use std::collections::{HashMap, HashSet, BTreeMap, BTreeSet};
| ^^^^^^^ ^^^^^^^
|
= note: `#[warn(unused_imports)]` on by default
warning: value assigned to `sft_cnt` is never read
--> src/main.rs:31:13
|
31 | let mut sft_cnt = 0;
| ^^^^^^^
|
= help: maybe it is overwritten before being read?
= note: `#[warn(unused_assignments)]` on by default
warning: value assigned to `sum_` is never read
--> src/main.rs:32:13
|
32 | let mut sum_ = 0;
| ^^^^
|
= help: maybe it is overwritten before being read?
ソースコード
use proconio::input;
use std::io::{stdout,Write,BufWriter};
use std::collections::{HashMap, HashSet, BTreeMap, BTreeSet};
fn main() {
input!{
n:usize,
e:[usize;n]
}
let out = stdout();
let mut out = BufWriter::new(out.lock());
let sum:usize = e.iter().sum();
if sum%3!=0 {
write!(out, "No").unwrap();
return
}
let e_:BTreeMap<usize, usize> = {
let mut tmp:BTreeMap<usize, usize> = BTreeMap::new();
for (i,&elem) in e.iter().enumerate() {
tmp.insert(i,elem);
}
tmp
};
let tmp:usize = 2_u32.pow(n as u32) as usize;
let mut is_one_third:[bool;4096] = [false; 4096];
let mut bit_indices:BTreeSet<usize> = BTreeSet::new();
let mut sft_cnt = 0;
let mut sum_ = 0;
let mut i_:usize;
// 12人のうち最大10人までを選び1/3を作れるか
for i in 1..tmp {
if i.count_ones() > 10{
is_one_third[i] = false;
continue;
}
i_ = i.clone();
sft_cnt = 0;
bit_indices.clear();
loop {
if sft_cnt>=n {
break;
}
if ((i_>>sft_cnt) & 0b1)==0b1 {
bit_indices.insert(sft_cnt);
}
sft_cnt += 1;
}
sum_ = 0;
for idx in bit_indices.iter() {
// println!("{}", idx);
sum_ += e_.get(&idx).unwrap();
// println!("{}", idx);
}
is_one_third[i] = sum_==sum/3;
}
for i in 1..tmp {
for j in i..tmp {
if i&j==0 && i&j<tmp && is_one_third[i] && is_one_third[j] {
write!(out, "Yes").unwrap();
return
}
}
}
write!(out, "No").unwrap();
}