## Ý tưởng
- Bài toán yêu cầu tìm giá trị lớn nhất của `Ai × Aj` với `i < j`.
- Nhận xét:
- Tích lớn nhất có thể đến từ **hai số dương lớn nhất**.
- Hoặc từ **hai số âm nhỏ nhất** (âm × âm = dương).
- Vì vậy ta chỉ cần xét:
- Tích của 2 số lớn nhất.
- Tích của 2 số nhỏ nhất.
- Đáp án là giá trị lớn hơn trong 2 tích này.
## Độ phức tạp
- Sắp xếp mảng: `O(n log n)`.
- Bộ nhớ: `O(n)`.
## Lời giải chi tiết
1. Nhập mảng số nguyên `A`.
2. Sắp xếp mảng.
3. So sánh:
- `A[0] * A[1]` (hai số nhỏ nhất).
- `A[n-1] * A[n-2]` (hai số lớn nhất).
4. In ra giá trị lớn hơn.
## Code tham khảo (C++17)
```cpp
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
vector<long long> a(n);
for (auto &x : a) cin >> x;
sort(a.begin(), a.end());
long long res = max(1LL * a[0] * a[1],
1LL * a[n-1] * a[n-2]);
cout << res;
}
```