Solutions of Largest value - MarisaOJ: Marisa Online Judge

Solutions of Largest value

Select solution language

Write solution here.


NDC    Created at    0 likes

## Ý 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; } ```