Bài toán: n khán giả. Thời điểm 1: KH1 đứng, 2: KH2 đứng,... k: KHk đứng. k+1: KHk+1 đứng, KH1 ngồi. k+2: KHk+2 đứng, KH2 ngồi,... Tìm số người đứng lúc t.
Công thức: min(t, k, n + k - t).
- Giai đoạn 1 (
t ≤ k):tngười đứng. - Giai đoạn 2 (
k < t ≤ n):kngười đứng (cửa sổ trượt). - Giai đoạn 3 (
t > n):n + k - tngười đứng (giảm dần).
Code C++
#include <bits/stdc++.h>
using namespace std;
int solve(int n, int k, int t) {
return min({t, k, n + k - t});
}
int main() {
cout << solve(10, 5, 3) << endl; // 3
return 0;
}
Kết quả
3