結果
| 問題 | No.2746 Bicolor Pyramid |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2024-04-19 23:26:54 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 90 ms / 2,000 ms |
| コード長 | 828 bytes |
| 記録 | |
| コンパイル時間 | 199 ms |
| コンパイル使用メモリ | 82,176 KB |
| 実行使用メモリ | 75,904 KB |
| 最終ジャッジ日時 | 2024-10-11 18:04:40 |
| 合計ジャッジ時間 | 3,778 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 36 |
ソースコード
X = 85344
sqrtX = 292
def solve(v):
ng = 1817123
ans = 0
while ng - ans > 1:
mid = (ans + ng) // 2
if mid * (mid + 1) * (2 * mid + 1) // 6 <= v:
ans = mid
else:
ng = mid
return ans
B, W = map(int, input().split())
if B > W:
B, W = W, B
ans = 0
if B > X:
ans = solve(B + W)
else:
dp0 = [False] * (B + 1)
dp1 = [False] * (B + 1)
dp0[B] = True
Q = B
S = 0
for i in range(1, sqrtX + 1):
dp1 = [False] * (B + 1)
t = i * i
S += t
for j in range(B + 1):
if dp0[j]:
Q = min(Q, j)
if j >= t:
dp1[j - t] = True
if S - (B - j) <= W:
dp1[j] = True
dp0 = dp1[:]
ans = solve(B + W - Q)
print(ans)