Cho mảng A kích thước n, B kích thước m. Chọn a từ A, b từ B sao cho a+b không thuộc A và không thuộc B.
Ví dụ
Với A=[3,2,2], B=[1,5,7,7,9], đầu ra [3,1] vì 3+1=4 không có trong mảng nào. (Câu trả lời khác: 3 và 9).
Giải thuật
Sắp xếp cả hai mảng. Chọn phần tử lớn nhất của A và lớn nhất của B. Tổng của chúng chắc chắn lớn hơn mọi phần tử trong cả hai mảng (vì phần tử lớn nhất + phần tử lớn nhất > mỗi phần tử riêng lẻ). Do đó tổng không thuộc mảng nào.
Mã C++
#include <bits/stdc++.h>
using namespace std;
void solve(vector<int> A, vector<int> B) {
sort(A.begin(), A.end());
sort(B.begin(), B.end());
cout << A[A.size() - 1] << ", " << B[B.size() - 1];
}
int main() {
vector<int> A = { 3, 2, 2 };
vector<int> B = { 1, 5, 7, 7, 9 };
solve(A, B);
}
Đầu vào / Đầu ra
Input: { 3, 2, 2 }, { 1, 5, 7, 7, 9 }
Output: 3, 9