結果
問題 |
No.3120 Lower Nim
|
ユーザー |
|
提出日時 | 2025-04-19 10:43:27 |
言語 | Rust (1.83.0 + proconio) |
結果 |
RE
|
実行時間 | - |
コード長 | 1,566 bytes |
コンパイル時間 | 12,562 ms |
コンパイル使用メモリ | 402,504 KB |
実行使用メモリ | 26,468 KB |
平均クエリ数 | 2.50 |
最終ジャッジ日時 | 2025-04-19 10:44:32 |
合計ジャッジ時間 | 20,968 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | RE * 1 |
other | RE * 43 |
ソースコード
#![allow(unused_imports,non_snake_case,dead_code)] use std::{cmp::Reverse as Rev,collections::*,iter::*}; use proconio::{marker::*,input_interactive as input}; // #[fastout] fn main(){ input!{ n:usize, mut a:[usize;n], } let mut i_am_first=false; for i in 0..{ let cnt=a.iter().map(|&a|a>>i).sum::<usize>(); if cnt==0{ break; } else if cnt%2==1{ i_am_first=true; } } if i_am_first{ println!("First"); } else{ println!("Second"); } // i,x let solve=|x:usize,a:&[usize]|->(usize,usize){ for i in 0..{ let cnt=a.iter().map(|&a|a>>i).sum::<usize>(); if cnt==0{ panic!(); } else if cnt%2==1{ assert!(1<<i<=x); let idx=(0..a.len()).find(|&j|a[j]>=(1<<i)).unwrap(); return (idx,1<<i); } } panic!(); }; const INF:usize=usize::MAX/64; if i_am_first{ let (i,x)=solve(INF,&a); a[i]-=x; println!("{} {}",i+1,x); // eprintln!("{:?}",a); } loop{ input!{ t:i64, } if t==1{ return; } else if t==-1{ // panic!(); return; } input!{ ji:Usize1, jx:usize, } a[ji]-=jx; // eprintln!("{:?}",a); let (i,x)=solve(INF,&a); a[i]-=x; println!("{} {}",i+1,x); // eprintln!("{:?}",a); } }