結果
問題 |
No.3048 Swing
|
ユーザー |
|
提出日時 | 2025-02-03 21:43:19 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 1,082 bytes |
コンパイル時間 | 10,680 ms |
コンパイル使用メモリ | 353,096 KB |
実行使用メモリ | 7,844 KB |
最終ジャッジ日時 | 2025-06-20 02:21:13 |
合計ジャッジ時間 | 11,083 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 62 |
ソースコード
#include <bits/stdc++.h> #include "testlib.h" void solve() { const long long m = 1'000'000'000'000'000'000; long long x = inf.readLong(-m, m); inf.readSpace(); long long n = inf.readLong(1, m); inf.readEoln(); long long y = abs(x); long long l = 0; long long r = 1LL << 31; while (r - l > 1) { long long mid = (l + r) >> 1; if (mid * (mid + 1) / 2 > y) { r = mid; } else { l = mid; } } if (l > n) { if (x > 0) { x -= n * (n + 1) / 2; } else { x += n * (n + 1) / 2; } std::cout << x << std::endl; return; } y -= l * (l + 1) / 2; bool is_zero = y == 0; y += (n - l) / 2; if ((n - l) % 2 == 1) { y -= n; } if (is_zero or x <= 0) { std::cout << -y << std::endl; } else { std::cout << y << std::endl; } } int main(int argc, char *argv[]) { std::cin.tie(0)->sync_with_stdio(0); registerValidation(argc, argv); solve(); inf.readEof(); }