結果
問題 | No.3048 Swing |
ユーザー |
👑 |
提出日時 | 2025-02-02 14:36:21 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 41 ms / 2,000 ms |
コード長 | 553 bytes |
コンパイル時間 | 236 ms |
コンパイル使用メモリ | 82,244 KB |
実行使用メモリ | 53,788 KB |
最終ジャッジ日時 | 2025-06-20 02:20:47 |
合計ジャッジ時間 | 4,430 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 62 |
ソースコード
x, n = map(int, input().split()) y = abs(x) l = 0 r = 1 << 31 while r - l > 1: mid = (l + r) // 2 if mid * (mid + 1) // 2 > y: r = mid else: l = mid if mid > n: if x > 0: x -= n * (n + 1) // 2 else: x += n * (n + 1) // 2 print(x) exit() y -= l * (l + 1) // 2 zero = y == 0 pm = -1 for l_ in [r, r + 1]: r_ = n if r_ % 2 != l_ % 2: r_ -= 1 y += pm * (l_ + r_) * ((r_ - l_) // 2 + 1) // 2 pm *= -1 if zero: print(-y) elif x > 0: print(y) else: print(-y)