結果
| 問題 |
No.3048 Swing
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-04-12 16:56:04 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 40 ms / 2,000 ms |
| コード長 | 1,404 bytes |
| コンパイル時間 | 382 ms |
| コンパイル使用メモリ | 82,336 KB |
| 実行使用メモリ | 54,000 KB |
| 最終ジャッジ日時 | 2025-06-20 02:35:04 |
| 合計ジャッジ時間 | 4,582 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 62 |
ソースコード
## https://yukicoder.me/problems/no/3048
import math
def main():
X, N = map(int, input().split())
if X > 0:
low = 1
high = N
if X - (high * (high + 1) )// 2 > 0:
print(X - (N * (N + 1)) // 2)
return
while high - low > 1:
mid =( high + low) // 2
if X - (mid * (mid + 1)) // 2 <= 0:
high = mid
else:
low = mid
if X - (low * (low + 1)) // 2 <= 0:
v = low
else:
v = high
y = X - (v * (v + 1)) // 2
p = (N - v + 1) // 2
p0 = p * v + p ** 2
m = (N - v) // 2
m0 = m * v + m * (m + 1)
ans = y + p0 - m0
else:
low = 1
high = N
if X + (high * (high + 1)) // 2 <= 0:
print(X + (N * (N + 1)) // 2)
return
while high - low > 1:
mid =( high + low) // 2
if X + (mid * (mid + 1)) // 2 > 0:
high = mid
else:
low = mid
if X + (low * (low + 1)) // 2 > 0:
v = low
else:
v = high
y = X + (v * (v + 1)) // 2
p = (N - v + 1) // 2
p0 = p * v + p ** 2
m = (N - v) // 2
m0 = m * v + m * (m + 1)
ans = y - p0 + m0
print(ans)
if __name__ == "__main__":
main()