#include using namespace std; #include using namespace atcoder; #pragma GCC target("avx") #pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") #define FASTIO cin.tie(0)->sync_with_stdio(0) using ll = __int128; using mint = modint998244353; ll read() { string s; cin >> s; ll ret = 0; ll sgn = (isdigit(s[0]) ? 1 : -1); for(char &c : s) { if(!isdigit(c)) continue; ret = ret * 10 + (c - '0'); } return sgn * ret; } void write(ll x) { if(x == 0) { cout << "0" << endl; return; }else if(x < 0) { cout << "-"; x *= -1; } string ret = ""; while(x > 0) { ret += to_string((int)(x % 10)); x /= 10; } reverse(ret.begin(), ret.end()); cout << ret << endl; } ll solve(ll x, ll n) { if(x == 0) { ll k = (n + 1) / 2; return (n % 2 == 1 ? k : -k); }else if(x < 0) { return -solve(-x, n); }else if(x > n * (n + 1) / 2) { return x - n * (n + 1) / 2; } ll ok = 0, ng = n; while(ok + 1 < ng) { ll k = (ok + ng) / 2; if(x > k * (k + 1) / 2) ok = k; else ng = k; } const ll m = ok; x -= m * (m + 1) / 2; if((n - m) % 2 == 1) { return x - (m + 1) - (n - m - 1) / 2; }else { return x + (n - m) / 2; } } int main() { ll x = read(); ll n = read(); write(solve(x, n)); }