結果
| 問題 | No.3559 +A,-B |
| コンテスト | |
| ユーザー |
detteiuu
|
| 提出日時 | 2026-05-31 03:42:41 |
| 言語 | PyPy3 (7.3.17) |
| 結果 |
AC
|
| 実行時間 | 246 ms / 2,000 ms |
| コード長 | 1,502 bytes |
| 記録 | |
| コンパイル時間 | 461 ms |
| コンパイル使用メモリ | 85,760 KB |
| 実行使用メモリ | 83,736 KB |
| 最終ジャッジ日時 | 2026-05-31 03:42:51 |
| 合計ジャッジ時間 | 9,621 ms |
|
ジャッジサーバーID (参考情報) |
judge2_0 / judge3_0 |
| 純コード判定待ち |
(要ログイン)
| サブタスク | 配点 | 結果 |
|---|---|---|
| 部分点1 | 10 % | AC * 4 |
| 部分点2 | 60 % | AC * 7 |
| 部分点3 | 30 % | AC * 20 |
| 合計 | 100 点 |
ソースコード
from sys import stdin
input = stdin.readline
def func():
if X+Y < 0:
if 0 < A:
now = X+Y
cnt = min(((-now)+A-1)//A, N)
return cnt
else:
return N
else:
return 0
def func2():
if 0 <= X+Y:
if 0 < B:
now = X+Y
cnt = min(now//B+1, N)
return cnt
else:
return N
else:
return 0
for _ in range(int(input())):
N, X, Y, A, B = map(int, input().split())
if A == 0 or B == 0:
if A == B == 0:
print(X, Y)
elif B == 0:
cnt = func()
print(X+A*cnt, Y)
else:
cnt = func2()
print(X, Y-B*cnt)
continue
if max(A, B) < 0:
if X+Y < 0:
print(X+A*N, Y)
else:
print(X, Y-B*N)
continue
if B < 0:
cnt = func()
print(X+A*cnt, Y-B*(N-cnt))
continue
if A < 0:
cnt = func2()
print(X+A*(N-cnt), Y-B*cnt)
continue
left = 0
right = N
while left+1 < right:
mid = (left+right)//2
if (X+A*mid)+(Y-B*(N-mid)) < 0:
left = mid
else:
right = mid
if left == 0 and 0 <= X+(Y-B*N):
print(X, Y-B*N)
elif right == N and (X+A*N)+Y <= 0:
print(X+A*N, Y)
elif -B <= (X+A*left)+(Y-B*(N-left)) < A:
print(X+A*left, Y-B*(N-left))
else:
print(X+A*right, Y-B*(N-right))
detteiuu