aboutsummaryrefslogtreecommitdiff
path: root/codechef/sticks/main.cpp
diff options
context:
space:
mode:
authoromagdy7 <omar.professional8777@gmail.com>2022-07-18 22:11:40 +0200
committeromagdy7 <omar.professional8777@gmail.com>2022-07-18 22:11:40 +0200
commitadb97626f5553013e2758aeb136c8ffd28436627 (patch)
treefa519c03dcd6dbc61ed350351bb226a7ffd33085 /codechef/sticks/main.cpp
parent51c35987f270f7a19d83a11b2427a9ff7803e17c (diff)
downloadcompetitive-programming-adb97626f5553013e2758aeb136c8ffd28436627.tar.xz
competitive-programming-adb97626f5553013e2758aeb136c8ffd28436627.zip
Solved a couple of problems
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;
+ }
+ }
+}