結果
| 問題 |
No.3375 Binary Grid
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-11-21 22:42:24 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,358 bytes |
| コンパイル時間 | 375 ms |
| コンパイル使用メモリ | 82,672 KB |
| 実行使用メモリ | 77,880 KB |
| 最終ジャッジ日時 | 2025-11-21 22:42:27 |
| 合計ジャッジ時間 | 2,630 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 1 WA * 6 |
ソースコード
import sys
input = lambda :sys.stdin.readline()[:-1]
ni = lambda :int(input())
na = lambda :list(map(int,input().split()))
yes = lambda :print("yes");Yes = lambda :print("Yes");YES = lambda : print("YES")
no = lambda :print("no");No = lambda :print("No");NO = lambda : print("NO")
#######################################################################
# m = 7
# for n in range(0, 1 << m):
# s = []
# for j in range(m):
# if n >> j & 1:
# s.append("O")
# else:
# s.append(" ")
# print("".join(s))
"""
C が R の最上位 bitじゃない R を増やして 最上位bitに移動する
最上位に隣接していればいい
"""
def solve(r, c):
f = 0
cnt = 0
mx = -1
for i in range(m-1, -1, -1):
if f == 0 and r >> i & 1:
f = 1
mx = i
elif f == 1 and r >> i & 1 ^ 1:
f = 2
if f == 1:
cnt += 1
if f == 1 and c == i:
return r - 1
# print(r, c)
if r >> (c + 1) & 1:
if (r + 1) >> (c + 1) & 1:
return solve(r+1, c+1) + 1
else:
return solve(r, c+1) + 1
toR = (1 << (mx + 1)) - (1 << (mx - cnt))
# print(bin(r))
return toR - 1 + max(toR - r, mx - cnt - c)
m = 62
for _ in range(ni()):
r, c = na()
print(solve(r, c-1))