#include <bits/stdc++.h>
using namespace std;
#define int long long
signed main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
long long h, d;
cin >> h >> d;
// Tìm k sao cho k*(k+1)/2 <= h
long long k = (sqrt(8.0*h + 1) - 1) / 2;
// Nếu chạy liên tiếp đủ để vượt d
if (k >= d) {
cout << d << "\n";
return 0;
}
// Tính thể lực còn lại sau khi chạy k bước
long long used = k*(k+1)/2;
long long remain = h - used;
// Số bước cần chạy thêm
long long need = d - k;
// Khi chạy tiếp bước (k+1), cần (k+1) thể lực.
// Nếu thiếu, phải nghỉ thêm.
long long nextCost = k + 1;
long long restNeeded = 0;
if (remain < nextCost) {
restNeeded = nextCost - remain;
remain = nextCost; // Sau khi nghỉ xong, đủ để chạy bước này
}
// Tổng lượt = số lượt đã chạy k + lượt nghỉ + lượt chạy thêm cần
long long result = k + restNeeded + need;
cout << result << "\n";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgaW50IGxvbmcgbG9uZwoKc2lnbmVkIG1haW4oKSB7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOwoKICAgIGxvbmcgbG9uZyBoLCBkOwogICAgY2luID4+IGggPj4gZDsKCiAgICAvLyBUw6xtIGsgc2FvIGNobyBrKihrKzEpLzIgPD0gaAogICAgbG9uZyBsb25nIGsgPSAoc3FydCg4LjAqaCArIDEpIC0gMSkgLyAyOwoKICAgIC8vIE7hur91IGNo4bqheSBsacOqbiB0aeG6v3AgxJHhu6cgxJHhu4Mgdsaw4bujdCBkCiAgICBpZiAoayA+PSBkKSB7CiAgICAgICAgY291dCA8PCBkIDw8ICJcbiI7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgLy8gVMOtbmggdGjhu4MgbOG7sWMgY8OybiBs4bqhaSBzYXUga2hpIGNo4bqheSBrIGLGsOG7m2MKICAgIGxvbmcgbG9uZyB1c2VkID0gayooaysxKS8yOyAKICAgIGxvbmcgbG9uZyByZW1haW4gPSBoIC0gdXNlZDsKCiAgICAvLyBT4buRIGLGsOG7m2MgY+G6p24gY2jhuqF5IHRow6ptCiAgICBsb25nIGxvbmcgbmVlZCA9IGQgLSBrOwoKICAgIC8vIEtoaSBjaOG6oXkgdGnhur9wIGLGsOG7m2MgKGsrMSksIGPhuqduIChrKzEpIHRo4buDIGzhu7FjLgogICAgLy8gTuG6v3UgdGhp4bq/dSwgcGjhuqNpIG5naOG7iSB0aMOqbS4KICAgIGxvbmcgbG9uZyBuZXh0Q29zdCA9IGsgKyAxOwoKICAgIGxvbmcgbG9uZyByZXN0TmVlZGVkID0gMDsKICAgIGlmIChyZW1haW4gPCBuZXh0Q29zdCkgewogICAgICAgIHJlc3ROZWVkZWQgPSBuZXh0Q29zdCAtIHJlbWFpbjsKICAgICAgICByZW1haW4gPSBuZXh0Q29zdDsgICAvLyBTYXUga2hpIG5naOG7iSB4b25nLCDEkeG7pyDEkeG7gyBjaOG6oXkgYsaw4bubYyBuw6B5CiAgICB9CgogICAgLy8gVOG7lW5nIGzGsOG7o3QgPSBz4buRIGzGsOG7o3QgxJHDoyBjaOG6oXkgayArIGzGsOG7o3Qgbmdo4buJICsgbMaw4bujdCBjaOG6oXkgdGjDqm0gY+G6p24KICAgIGxvbmcgbG9uZyByZXN1bHQgPSBrICsgcmVzdE5lZWRlZCArIG5lZWQ7CgogICAgY291dCA8PCByZXN1bHQgPDwgIlxuIjsKICAgIHJldHVybiAwOwp9Cg==