結果
問題 |
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()