結果

問題 No.3254 Xor, Max and Sum
コンテスト
ユーザー ID 21712
提出日時 2026-05-02 00:33:52
言語 Go
(1.26.1)
コンパイル:
env GOCACHE=/tmp go build _filename_
実行:
./Main
結果
WA  
実行時間 -
コード長 778 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 13,426 ms
コンパイル使用メモリ 286,468 KB
実行使用メモリ 6,400 KB
最終ジャッジ日時 2026-05-02 00:34:11
合計ジャッジ時間 16,555 ms
ジャッジサーバーID
(参考情報)
judge2_1 / judge1_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 25 WA * 23
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

package main

import . "fmt"

func main() {
	var n,m int
	Scan(&n,&m)
	if n == 1 {
		Println(0)
		return
	} else if n % 2 == 0 {
		Println(n*m)
		return
	}
	x := 0
	for i := 32; i >= 0; i-- {
		b := 1 << i
		if b <= m {
			x = b
			break
		}
	}
	y := m^x
	for i := 32; i >= 0; i-- {
		b := 1 << i
		if (m&b) == 0 && (x|b)<=m && (y|b) <= m {
			x |= b
			y |= b
		}
	}
	ans := m*(n-1)
	if (x^y^m)==0 && x <= m && y <= m {
		ans = max(ans, m*(n-2) + x+y)
	}
	x = 0
	for i := 32; i >= 0; i-- {
		b := 1 << i
		if b <= (m>>1) {
			x = b
			break
		}
	}
	y = (m>>1)^x
	for i := 32; i >= 0; i-- {
		b := 1 << i
		if ((m>>1)&b)==0 && (x|b) <= m && (y|b) <= m {
			x |= b
			y |= b
		}
	}
	if (x^y^(m>>1))==0 && x <= m && y <= m {
		ans = max(ans, m*(n-3)+x+y+(m>>1))
	}
	Println(ans)
}
0