結果
問題 |
No.1594 Three Classes
|
ユーザー |
|
提出日時 | 2025-06-02 23:45:33 |
言語 | Rust (1.83.0 + proconio) |
結果 |
AC
|
実行時間 | 10 ms / 2,000 ms |
コード長 | 1,788 bytes |
コンパイル時間 | 13,731 ms |
コンパイル使用メモリ | 378,812 KB |
実行使用メモリ | 6,272 KB |
最終ジャッジ日時 | 2025-06-02 23:45:48 |
合計ジャッジ時間 | 14,631 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 18 |
コンパイルメッセージ
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 1..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(); }