結果
問題 | No.133 カードゲーム |
ユーザー |
|
提出日時 | 2024-08-01 10:53:01 |
言語 | Rust (1.83.0 + proconio) |
結果 |
AC
|
実行時間 | 789 ms / 5,000 ms |
コード長 | 1,771 bytes |
コンパイル時間 | 11,749 ms |
コンパイル使用メモリ | 397,408 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-08-01 10:53:32 |
合計ジャッジ時間 | 28,678 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 19 |
コンパイルメッセージ
warning: unused imports: `BTreeSet`, `HashMap`, `hash::Hash` --> src/main.rs:2:19 | 2 | collections::{BTreeSet, HashMap}, | ^^^^^^^^ ^^^^^^^ 3 | hash::Hash, | ^^^^^^^^^^ | = note: `#[warn(unused_imports)]` on by default
ソースコード
use std::{collections::{BTreeSet, HashMap},hash::Hash,};fn main() {proconio::input! {n: usize,mut a: [u32; n],mut b: [u32; n],}let mut rng = Xorshift::new();let mut win = 0;for _ in 0..10000000 {shuffle(&mut a, &mut rng);shuffle(&mut b, &mut rng);let mut w = 0;for i in 0..n {if a[i] > b[i] {w += 1;}}if w > n / 2 {win += 1}}println!("{}", win as f64 / 10000000.);}fn shuffle<T>(x: &mut [T], rng: &mut Xorshift) {for i in 0..x.len() {let j = rng.rand(x.len() as u64) as usize;x.swap(i, j);}}#[derive(Debug)]#[allow(dead_code)]pub struct Xorshift {seed: u64,}impl Xorshift {#[allow(dead_code)]pub fn new() -> Xorshift {Xorshift {seed: 0xf0fb588ca2196dac,}}#[allow(dead_code)]pub fn with_seed(seed: u64) -> Xorshift {Xorshift { seed: seed }}#[inline]#[allow(dead_code)]pub fn next(&mut self) -> u64 {self.seed = self.seed ^ (self.seed << 13);self.seed = self.seed ^ (self.seed >> 7);self.seed = self.seed ^ (self.seed << 17);self.seed}#[inline]#[allow(dead_code)]pub fn rand(&mut self, m: u64) -> u64 {self.next() % m}#[inline]#[allow(dead_code)]// 0.0 ~ 1.0pub fn randf(&mut self) -> f64 {use std::mem;const UPPER_MASK: u64 = 0x3FF0000000000000;const LOWER_MASK: u64 = 0xFFFFFFFFFFFFF;let tmp = UPPER_MASK | (self.next() & LOWER_MASK);let result: f64 = unsafe { mem::transmute(tmp) };result - 1.0}}