The Miracle and the Sleeper (Codeforces 1562A)
Tags: Math, greedy

You are given two integers $$$l$$$ and $$$r$$$, $$$l\le r$$$. Find the largest possible value of $$$a \bmod b$$$ over all pairs $$$(a, b)$$$ of integers for which $$$r\ge a \ge b \ge l$$$.As a reminder, $$$a \bmod b$$$ is a remainder we get when dividing $$$a$$$ by $$$b$$$. For example, $$$26 \bmod 8 = 2$$$.

Input: Each test contains multiple test cases.The first line contains one positive integer $$$t$$$ $$$(1\le t\le 10^4)$$$, denoting the number of test cases. Description of the test cases follows.The only line of each test case contains two integers $$$l$$$, $$$r$$$ ($$$1\le l \le r \le 10^9$$$).

Output: For every test case, output the largest possible value of $$$a \bmod b$$$ over all pairs $$$(a, b)$$$ of integers for which $$$r\ge a \ge b \ge l$$$.

Note: In the first test case, the only allowed pair is $$$(a, b) = (1, 1)$$$, for which $$$a \bmod b = 1 \bmod 1 = 0$$$.In the second test case, the optimal choice is pair $$$(a, b) = (1000000000, 999999999)$$$, for which $$$a \bmod b = 1$$$.

Sample Inputs:
4
1 1
999999999 1000000000
8 26
1 999999999

Sample Outputs:
0
1
12
499999999

Solution (Python):
def f(a, b):
    if a <= b // 2:
        return b % (b // 2 + 1)
    else:
        return b % a
t = int(input())
data = []
for i in range(t):
    a = input().split(' ')
    a = [int(x) for x in a]
    data.append(f(a[0], a[1]))
for i in data:
    print(i)

Solution (Python):
for s in [*open(0)][1:]:
    (a, b) = map(int, s.split())
    print(b % max(a, b // 2 + 1))

Solution (Python):
import sys
put = sys.stdin.readline
t = int(put())
while t:
    t -= 1
    (l, r) = map(int, put().split())
    a = r
    b = max(r // 2 + 1, l)
    print(a % b)