結果
| 問題 |
No.1240 Or Sum of Xor Pair
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2020-09-19 00:05:38 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 1,288 bytes |
| コンパイル時間 | 159 ms |
| コンパイル使用メモリ | 82,052 KB |
| 実行使用メモリ | 106,380 KB |
| 最終ジャッジ日時 | 2024-06-22 11:54:14 |
| 合計ジャッジ時間 | 7,386 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 2 RE * 28 |
ソースコード
import sys,random
input=sys.stdin.readline
N,X=map(int,input().split())
A=list(map(int,input().split()))
def solve_square():
data_conv = [[0 for j in range(256)] for i in range(1024)]
data_bit = [[0 for j in range(8)] for i in range(256)]
cnt = [0 for i in range(1024)]
mask = 255
for i in range(N):
x,y = A[i]>>8, A[i]&mask
data_conv[x][y] += 1
cnt[x] += 1
for j in range(8):
if not y>>j & 1:
data_bit[x][j] += 1
def all_sum(x,y):
res = 0
upper_bit = (x | y) << 8
res += upper_bit * cnt[x] * cnt[y]
for i in range(8):
res += (1 << i) * (cnt[x] * cnt[y] - data_bit[x][i] * data_bit[y][i])
return res
def convolute(x,y):
res = 0
upper_bit = (x | y) << 8
for i in range(256):
for j in range(256):
if i^j < X&mask:
res += (upper_bit + (i | j)) * data_conv[x][i] * data_conv[y][j]
return res
ans=0
for i in range(1024):
for j in range(1024):
if i^j < (X>>8):
ans += all_sum(i,j)
elif i^j == (X>>8):
ans += convolute(i,j)
ans -= sum(A)
ans //= 2
return ans
print(solve_square())