OIG XVII - lic

// https://szkopul.edu.pl/problemset/problem/fiEsvtlkaVCfXRj-Hub0VOxp/site/?key=statement
// OIJ XVII 3 etap próbny
// Liczby

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

unordered_map<int, int> was;

int main() {
    std::ios_base::sync_with_stdio(0);
    std::cin.tie(0);
    std::cout.tie(0);

    int n;
    std::cin >> n;

    vector<int> v;

    for (int i = 0; i < n; i++) {
        int a;
        std::cin >> a;

        if (was[a] < 2) {
            v.push_back(a);
            was[a]++;
        }
    }

    sort(v.begin(), v.end(), [](int a, int b) {
        if (abs(a) < abs(b)) {
            return false;
        }
        return true;
    });

    long long ans = 0;

    if (n <= 500) {
        for (int i = 0; i < (int)v.size(); i++) {
            for (int j = i + 1; j < (int)v.size(); j++) {
                ans = std::max(ans, abs((ll)v[i] * v[j] - (ll)(v[i] + v[j])));
            }
        }
    } else {
        int d_q = std::min(100, (int)v.size());

        for (int i = 0; i < d_q; i++) {
            for (int j = i + 1; j < d_q; j++) {
                ans = std::max(ans, abs((ll)v[i] * v[j] - (ll)(v[i] + v[j])));
            }
        }
    }

    std::cout << ans << '\n';

    return 0;
}