結果
問題 |
No.1957 Xor Min
|
ユーザー |
![]() |
提出日時 | 2025-05-15 23:23:26 |
言語 | Go (1.23.4) |
結果 |
AC
|
実行時間 | 37 ms / 2,000 ms |
コード長 | 750 bytes |
コンパイル時間 | 13,206 ms |
コンパイル使用メモリ | 240,612 KB |
実行使用メモリ | 7,844 KB |
最終ジャッジ日時 | 2025-05-15 23:23:42 |
合計ジャッジ時間 | 14,360 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 25 |
ソースコード
package main import . "fmt" func main() { var a, b int Scan(&a,&b) Println(solve(a,b)) } func solve(a, b int) int { var x, y int for i := 62; i >= 0; i-- { c := 1 << i switch { case x+c <= a && y+c <= b: if x < y { x += c } else { y += c } case x+c <= a: x += c case y+c <= b: y += c } } return min(x,y,x^y) } func init() { check() } func check() { for a := 1; a <= 100; a++ { for b := 1; b <= 100; b++ { s1 := solve(a, b) s2 := bruteforce(a, b) if s1 != s2 { panic(Sprintf("a=%d,b=%d,s1=%d,s2=%d",a,b,s1,s2)) } } } } func bruteforce(a, b int) int { ans := 0 for x := 0; x <= a; x++ { for y := 0; y <= b; y++ { ans = max(ans, min(x,y,x^y)) } } return ans }