結果
問題 |
No.3120 Lower Nim
|
ユーザー |
|
提出日時 | 2025-04-19 10:45:07 |
言語 | Rust (1.83.0 + proconio) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,630 bytes |
コンパイル時間 | 12,708 ms |
コンパイル使用メモリ | 400,648 KB |
実行使用メモリ | 25,844 KB |
平均クエリ数 | 0.80 |
最終ジャッジ日時 | 2025-04-19 10:45:24 |
合計ジャッジ時間 | 16,868 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | -- * 1 |
other | AC * 5 TLE * 1 -- * 37 |
ソースコード
#![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); } let get_state=||{ input!{ t:i64, } if t==1{ std::process::exit(0); } else if t==-1{ panic!(); } }; loop{ get_state(); input!{ ji:Usize1, jx:usize, } get_state(); a[ji]-=jx; // eprintln!("{:?}",a); let (i,x)=solve(INF,&a); a[i]-=x; println!("{} {}",i+1,x); // eprintln!("{:?}",a); } }