aboutsummaryrefslogtreecommitdiff
path: root/codechef/sticks/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'codechef/sticks/main.cpp')
-rw-r--r--codechef/sticks/main.cpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/codechef/sticks/main.cpp b/codechef/sticks/main.cpp
new file mode 100644
index 0000000..b5fae0e
--- /dev/null
+++ b/codechef/sticks/main.cpp
@@ -0,0 +1,42 @@
+#include <bits/stdc++.h>
+
+using namespace std;
+
+int main() {
+ ios_base::sync_with_stdio(false);
+ cin.tie(NULL);
+ int tt;
+ cin >> tt;
+ while (tt--) {
+ int n;
+ cin >> n;
+ vector<int> v(n);
+ map<int, int> mp;
+ for (int &x : v) {
+ cin >> x;
+ mp[x]++;
+ }
+ vector<int> pair;
+ set<int> vis;
+ int sq = 0;
+ sort(v.begin(), v.end());
+ for(int i = v.size() - 1; i > 0; i--) {
+ int elem = v[i];
+ if(mp[elem] >= 4) {
+ sq = elem;
+ }
+ if(mp[elem] >= 2 && !vis.count(elem)) {
+ if(pair.size() == 2) {
+ break;
+ }
+ pair.push_back(elem);
+ vis.insert(elem);
+ }
+ }
+ if(pair.size() == 2) {
+ cout << max(pair[0] * pair[1], sq * sq) << endl;
+ } else {
+ cout << -1 << endl;
+ }
+ }
+}