結果
| 問題 | No.3559 +A,-B |
| コンテスト | |
| ユーザー |
kidodesu
|
| 提出日時 | 2026-05-29 21:32:33 |
| 言語 | PyPy3 (7.3.17) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,405 bytes |
| 記録 | |
| コンパイル時間 | 408 ms |
| コンパイル使用メモリ | 85,504 KB |
| 実行使用メモリ | 83,852 KB |
| 最終ジャッジ日時 | 2026-05-29 21:32:41 |
| 合計ジャッジ時間 | 6,398 ms |
|
ジャッジサーバーID (参考情報) |
judge1_1 / judge3_1 |
(要ログイン)
| サブタスク | 配点 | 結果 |
|---|---|---|
| 部分点1 | 10 % | AC * 2 WA * 2 |
| 部分点2 | 60 % | AC * 7 |
| 部分点3 | 30 % | AC * 9 WA * 2 RE * 9 |
| 合計 | 60 点 |
ソースコード
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+1, n)
n -= m
y -= m * b
else:
m = min((abs(z)-1)//a, n)
n -= m
x += m * a
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, (abs(x+y)+b-1)//b)
n -= m
x += a*m
return x, y-b*n
for _ in range(int(input())):
print(*main())
kidodesu