Cho N vật loại A, M vật loại B. Tạo nhiều nhóm nhất có thể, mỗi nhóm gồm đúng 3 vật, có ít nhất 1 vật mỗi loại (tức là không được toàn A hoặc toàn B).
Ví dụ
N = 3, M = 5 → Output: 2 (Nhóm: 1A+2B, 1A+2B. Dùng 2A, 4B) N = 5, M = 9 → Output: 4
Phân tích trường hợp
Mỗi nhóm dùng 3 vật, trong đó có (1A,2B) hoặc (2A,1B).
- Nếu
M ≥ 2N: A là hạn chế → tối đaNnhóm (mỗi nhóm 1A+2B). - Nếu
N ≥ 2M: B là hạn chế → tối đaMnhóm (mỗi nhóm 2A+1B). - Ngược lại: có thể cân bằng → tối đa
⌊(N+M)/3⌋nhóm.
Công thức gọn: min(N, M, (N+M)/3) (chia nguyên).
Chương trình C++
#include <bits/stdc++.h>
using namespace std;
int maxGroups(int N, int M) {
return min({N, M, (N + M) / 3});
}
int main() {
int N = 5, M = 9;
cout << maxGroups(N, M); // Output: 4
return 0;
}
Kết quả
4
Giải thích công thức
Tổng vật = N+M. Mỗi nhóm 3 vật → tối đa (N+M)/3 nhóm. Ngoài ra, mỗi nhóm cần ≥1 A và ≥1 B → số nhóm ≤ N và ≤ M. Vậy đáp án = min(N, M, (N+M)/3).