http://arc081.contest.atcoder.jp/tasks/arc081_a
解法
http://arc081.contest.atcoder.jp/submissions/1529805
長方形を作るには同じ長さの棒が2セット必要である。
そのため、同じ長さの棒を1セットとして、配列vに入れておく。
長方形の面積を最大化するには、そのセットのうち、最長の2つを使えばよい。
ソートして最長の2つを使って面積を求めれば答え。
typedef long long ll; int N, A[101010]; //--------------------------------------------------------------------------------------------------- void _main() { cin >> N; rep(i, 0, N) cin >> A[i]; vector<int> v; map<int, int> cnt; rep(i, 0, N) { cnt[A[i]]++; if (cnt[A[i]] == 2) cnt[A[i]] = 0, v.push_back(A[i]); } sort(v.begin(), v.end(), greater<int>()); ll ans = 0; if (2 <= v.size()) ans = 1LL * v[0] * v[1]; printf("%lld\n", ans); }