Chat Ban
Contest: Educational Codeforces Round 117 (Rated for Div. 2)
Difficulty rating: 1300
Tags: binary search, math

You are a usual chat user on the most famous streaming platform. Of course, there are some moments when you just want to chill and spam something.

More precisely, you want to spam the emote triangle of size $$$k$$$. It consists of $$$2k-1$$$ messages. The first message consists of one emote, the second one — of two emotes, ..., the $$$k$$$-th one — of $$$k$$$ emotes, the $$$k+1$$$-th one — of $$$k-1$$$ emotes, ..., and the last one — of one emote.

For example, the emote triangle for $$$k=3$$$ consists of $$$5$$$ messages:

Of course, most of the channels have auto moderation. Auto moderator of the current chat will ban you right after you spam at least $$$x$$$ emotes in succession (you can assume you are the only user in the chat). Now you are interested — how many messages will you write before getting banned? Or maybe you will not get banned at all (i.e. will write all $$$2k-1$$$ messages and complete your emote triangle successfully)? Note that if you get banned as a result of writing a message, this message is also counted.

You have to answer $$$t$$$ independent test cases.

Input format:
The first line of the input contains one integer $$$t$$$ ($$$1 \le t \le 10^4$$$) — the number of test cases. The next $$$t$$$ lines describe test cases.

The only line of the test case contains integers $$$k$$$ and $$$x$$$ ($$$1 \le k \le 10^9; 1 \le x \le 10^{18}$$$).

Output format:
For each test case, print the number of messages you will write before getting banned for the corresponding values $$$k$$$ and $$$x$$$.

Constraints:
Time limit: 2.0 s
Memory limit: 512.0 MB

Note:
Let's analyze the test cases of the example.

1. In the first test case, you write three messages containing $$$1$$$, $$$2$$$ and $$$3$$$ emotes respectively, and since $$$1 + 2 + 3 \ge 6$$$, you get banned after that.
2. In the second test case, you write four messages containing $$$1$$$, $$$2$$$, $$$3$$$ and $$$4$$$ emotes respectively, and since $$$1 + 2 + 3 + 4 \ge 7$$$, you get banned after that.
3. In the third test case, you write one message containing exactly $$$1$$$ emote. It doesn't get you banned, since $$$1 < 2$$$, but you have already finished posting your emote triangle. So you wrote one message successfully.
4. In the fourth test case, you write four messages containing $$$1$$$, $$$2$$$, $$$3$$$ and $$$2$$$ emotes respectively, and since $$$1 + 2 + 3 + 2 \ge 7$$$, you get banned after that.
5. In the fifth test case, you write three messages containing $$$1$$$, $$$2$$$ and $$$1$$$ emote respectively. It doesn't get you banned, since $$$1 + 2 + 1 < 5$$$, but you have already finished posting your emote triangle. So you wrote three messages successfully.
6. In the sixth test case, since $$$x = 1$$$, you get banned as soon as you send your first message.
7. The seventh test case is too large to analyze, so we'll skip it.

Example input:
7
4 6
4 7
1 2
3 7
2 5
100 1
1000000000 923456789987654321

Example output:
3
4
1
4
3
1
1608737403

Editorial:
This is a pretty obvious binary search problem. If we get banned after $$$y$$$ messages, we also get banned after $$$y+1$$$, $$$y+2$$$ and so on messages (and vice versa, if we don't get banned after $$$y$$$ messages, we also don't get banned after $$$y-1$$$, $$$y-2$$$ and so on messages).
For simplicity, let's split the problem into two parts: when we check if we're getting banned after $$$y$$$ messages, let's handle cases $$$y < k$$$ and $$$y \ge k$$$ separately.
Recall that the sum of the arithmetic progression consisting of integers $$$1$$$, $$$2$$$, ..., $$$y$$$ is $$$\frac{y(y+1)}{2}$$$. Let it be $$$cnt(y)$$$.
The first case is pretty simple: the number of emotes we send with $$$y$$$ messages when $$$y < k$$$ is $$$\frac{y(y+1)}{2}$$$ which is $$$cnt(y)$$$. So we only need to check if $$$cnt(y) \ge x$$$.
The second case is a bit harder but still can be done using arithmetic progression formulas. Firstly, we send all messages for $$$y \le k$$$ (the number of such messages is $$$cnt(k)$$$). Then, we need to add $$$(k - 1) + (k - 2) + \ldots + (y - k)$$$ messages. This number equals to $$$cnt(k - 1) - cnt(2k - 1 - y)$$$ (i.e. we send all messages from $$$k-1$$$ to $$$1$$$ and subtract messages from $$$1$$$ to $$$2k - 1 - y$$$ from this amount). The final condition is $$$cnt(k) + cnt(k - 1) - cnt(2k - 1 - y) \ge x$$$.
Time complexity: $$$O(\log{k})$$$ per test case.