Cho ba số n, a, b. Ta đứng trong hàng n người, không biết vị trí chính xác. Biết rằng: có ít nhất a người phía trước, và nhiều nhất b người phía sau. Tìm số vị trí có thể.
Ví dụ: n = 10, a = 3, b = 4 → kết quả 5. Vị trí có thể: 0,1,2,3,4 (0-based từ trước).
Thuật toán giải quyết (O(1))
- Nếu
a + b < n: trả vềb + 1 - Nếu
a + b >= n: trả vền - a
Giải thích: Vị trí i (0-based) thỏa mãn i ≥ a và n-1-i ≤ b → i ≥ a và i ≥ n-1-b. Số vị trí = min(n-1, n-1-b) - a + 1 = ...
Ví dụ minh họa
def solve(n, a, b):
if a + b < n:
return b + 1
if a + b >= n:
return n - a
n = 10
a = 3
b = 4
print(solve(n, a, b))
Đầu vào
10, 3, 4
Đầu ra
5