#include <bits/stdc++.h>
#include<iostream>
#include<bitset>
#include<unordered_set>
#include<algorithm>
using namespace std;
#define int long long
#define ld long double
#define ull unsigned long long
#define endl '\n'
#define pb push_back
#define pf push_front
#define sz(s) (int)(s.size())
#define all(v) v.begin(),v.end()
#define allr(v) v.rbegin(),v.rend()
#define pq priority_queue
#define mp make_pair
#define S second
#define F first
#define cin(v) for(auto &it:v)cin>>it;
#define cinG(grid) for(auto &r:grid) for(auto &c:r)cin>>c;
#define cout(v) for(auto &it:v)cout<<it<<" ";
#define ret return
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<bool> vb;
typedef vector<vb> vvb;
typedef vector<char> vc;
typedef vector<vc> vvc;
typedef vector<pair<int, int>> vpi;
int Inf = 2e18;
int num;
const int mod = 1e9 + 7;
//solve
const int N = 2e3 + 5;
int di[8]{ 1 , -1 , 0 , 0 , 1 , 1 , -1 , -1 };
int dj[8]{ 0 , 0 , 1 , -1 , 1 , -1 , -1 , 1 };
char dv[4]{ 'D','U','R','L' };
int can(int addCandiesTimes, int n, int rc) {
int totallC = addCandiesTimes * (addCandiesTimes + 1) / 2;
int ateTimes = totallC - rc;
ret ateTimes;
}
void Zero() {
int n, rc; cin >> n >> rc;
int l = 0, r = n;
int ans = 0;
while (l <= r) {
int addCTimes = l + ((r - l) >> 1);
int ateTimes = can(addCTimes, n, rc);
if (ateTimes + addCTimes == n) {
ans = ateTimes;
break;
}
else if (ateTimes + addCTimes < n) {
l = addCTimes + 1;
}
else {
r = addCTimes - 1;
}
}
cout << ans << endl;
}
void solve() {
int tc = 1;
//put pre processing functions here
//cin >> tc;
while (tc--) {
Zero();
}
}
signed main() {
// ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr); // Not needed with scanf/printf
solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNpbmNsdWRlPGlvc3RyZWFtPgojaW5jbHVkZTxiaXRzZXQ+CiNpbmNsdWRlPHVub3JkZXJlZF9zZXQ+CiNpbmNsdWRlPGFsZ29yaXRobT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgbGQgbG9uZyBkb3VibGUKI2RlZmluZSB1bGwgdW5zaWduZWQgbG9uZyBsb25nCiNkZWZpbmUgZW5kbCAnXG4nCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgcGYgcHVzaF9mcm9udAojZGVmaW5lIHN6KHMpCShpbnQpKHMuc2l6ZSgpKQojZGVmaW5lIGFsbCh2KSB2LmJlZ2luKCksdi5lbmQoKQojZGVmaW5lIGFsbHIodikgdi5yYmVnaW4oKSx2LnJlbmQoKQojZGVmaW5lIHBxIHByaW9yaXR5X3F1ZXVlCiNkZWZpbmUgbXAgbWFrZV9wYWlyCiNkZWZpbmUgUyBzZWNvbmQKI2RlZmluZSBGIGZpcnN0CiNkZWZpbmUgY2luKHYpIGZvcihhdXRvICZpdDp2KWNpbj4+aXQ7CiNkZWZpbmUgY2luRyhncmlkKSBmb3IoYXV0byAmcjpncmlkKSBmb3IoYXV0byAmYzpyKWNpbj4+YzsKI2RlZmluZSBjb3V0KHYpIGZvcihhdXRvICZpdDp2KWNvdXQ8PGl0PDwiICI7CiNkZWZpbmUgcmV0IHJldHVybgp0eXBlZGVmIHZlY3RvcjxpbnQ+IHZpOwp0eXBlZGVmIHZlY3Rvcjx2aT4gdnZpOwp0eXBlZGVmIHZlY3Rvcjxib29sPiB2YjsKdHlwZWRlZiB2ZWN0b3I8dmI+IHZ2YjsKdHlwZWRlZiB2ZWN0b3I8Y2hhcj4gdmM7CnR5cGVkZWYgdmVjdG9yPHZjPiB2dmM7CnR5cGVkZWYgdmVjdG9yPHBhaXI8aW50LCBpbnQ+PiB2cGk7CgppbnQgSW5mID0gMmUxODsKaW50IG51bTsKY29uc3QgaW50IG1vZCA9IDFlOSArIDc7Ci8vc29sdmUKCgpjb25zdCBpbnQgTiA9IDJlMyArIDU7CmludCBkaVs4XXsgMSAsIC0xICwgMCAsICAwICwgMSAsICAxICwgLTEgLCAtMSB9OwppbnQgZGpbOF17IDAgLCAgMCAsIDEgLCAtMSAsIDEgLCAtMSAsIC0xICwgIDEgfTsKY2hhciBkdls0XXsgJ0QnLCdVJywnUicsJ0wnIH07CgoKCmludCBjYW4oaW50IGFkZENhbmRpZXNUaW1lcywgaW50IG4sIGludCByYykgewoJaW50IHRvdGFsbEMgPSBhZGRDYW5kaWVzVGltZXMgKiAoYWRkQ2FuZGllc1RpbWVzICsgMSkgLyAyOwoJaW50IGF0ZVRpbWVzID0gdG90YWxsQyAtIHJjOwoJcmV0IGF0ZVRpbWVzOwp9CgoKdm9pZCBaZXJvKCkgewoJaW50IG4sIHJjOyBjaW4gPj4gbiA+PiByYzsKCWludCBsID0gMCwgciA9IG47CglpbnQgYW5zID0gMDsKCXdoaWxlIChsIDw9IHIpIHsKCQlpbnQgYWRkQ1RpbWVzID0gbCArICgociAtIGwpID4+IDEpOwoJCWludCBhdGVUaW1lcyA9IGNhbihhZGRDVGltZXMsIG4sIHJjKTsKCQlpZiAoYXRlVGltZXMgKyBhZGRDVGltZXMgPT0gbikgewoJCQlhbnMgPSBhdGVUaW1lczsKCQkJYnJlYWs7CgkJfQoJCWVsc2UgaWYgKGF0ZVRpbWVzICsgYWRkQ1RpbWVzIDwgbikgewoJCQlsID0gYWRkQ1RpbWVzICsgMTsKCQl9CgkJZWxzZSB7CgkJCXIgPSBhZGRDVGltZXMgLSAxOwoJCX0KCX0KCgljb3V0IDw8IGFucyA8PCBlbmRsOwoKfQoKdm9pZCBzb2x2ZSgpIHsKCWludCB0YyA9IDE7CgoJLy9wdXQgcHJlIHByb2Nlc3NpbmcgZnVuY3Rpb25zIGhlcmUKCgoJLy9jaW4gPj4gdGM7Cgl3aGlsZSAodGMtLSkgewoJCVplcm8oKTsKCX0KfQoKc2lnbmVkIG1haW4oKSB7CgkvLyBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKSwgY2luLnRpZShudWxscHRyKSwgY291dC50aWUobnVsbHB0cik7IC8vIE5vdCBuZWVkZWQgd2l0aCBzY2FuZi9wcmludGYKCXNvbHZlKCk7CglyZXR1cm4gMDsKfQ==