結果
| 問題 | No.3559 +A,-B |
| コンテスト | |
| ユーザー |
kidodesu
|
| 提出日時 | 2026-05-29 21:27:20 |
| 言語 | PyPy3 (7.3.17) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,500 bytes |
| 記録 | |
| コンパイル時間 | 366 ms |
| コンパイル使用メモリ | 85,900 KB |
| 実行使用メモリ | 84,752 KB |
| 最終ジャッジ日時 | 2026-05-29 21:27:27 |
| 合計ジャッジ時間 | 4,263 ms |
|
ジャッジサーバーID (参考情報) |
judge4_0 / judge1_1 |
(要ログイン)
| サブタスク | 配点 | 結果 |
|---|---|---|
| 部分点1 | 10 % | AC * 2 WA * 2 |
| 部分点2 | 60 % | AC * 2 RE * 5 |
| 部分点3 | 30 % | AC * 4 WA * 2 RE * 14 |
| 合計 | 0 点 |
ソースコード
def main():
n, x, y, a, b = list(map(int, input().split()))
if 0 < a and 0 < b:
z = x + y
if 0 < z:
m = min(z // b, n)
n -= m
y -= m * b
else:
m = min(abs(z) // a, n)
n -= m
x += m * a
if n == 0:
return x, y
if 0 <= x + y:
y -= b
n -= 1
if n == 0: return x, y
l = 0
r = n
def f(s):
nx = x + s * a
ny = y - (n-s) * b
if -b <= (nx+ny) < a:
return 0
elif a < (nx+ny):
return 1
else:
return -1
if not f(0): return x, y - b*n
elif not f(n): return x + a*n, y
while r - l > 1:
m = (l + r) >> 1
rep = f(m)
if not rep: return x+a*m, y-b*(n-m)
elif 0 < rep: r = m
else: l = m
for m in [l, r]:
if not f(m): return x+a*m, y-b*(n-m)
else:
if 0 <= x+y:
if b <= 0:
return x, y-b*n
else:
m = min(n, (x+y+b)//b)
n -= m
y -= b*m
return x+a*n, y
else:
if a <= 0:
return x+a*n, y
else:
m = min(n, (x+y+b-1)//b)
n -= m
x += a*m
return x, y-b*n
for _ in range(int(input())):
print(*main())
kidodesu