Task: | 3SUM |
Sender: | HFalke |
Submission time: | 2024-10-21 16:44:48 +0300 |
Language: | C++ (C++17) |
Status: | READY |
Result: | TIME LIMIT EXCEEDED |
test | verdict | time | |
---|---|---|---|
#1 | ACCEPTED | 0.00 s | details |
#2 | ACCEPTED | 0.00 s | details |
#3 | ACCEPTED | 0.00 s | details |
#4 | ACCEPTED | 0.00 s | details |
#5 | ACCEPTED | 0.00 s | details |
#6 | ACCEPTED | 0.00 s | details |
#7 | ACCEPTED | 0.00 s | details |
#8 | ACCEPTED | 0.00 s | details |
#9 | ACCEPTED | 0.01 s | details |
#10 | ACCEPTED | 0.33 s | details |
#11 | ACCEPTED | 0.09 s | details |
#12 | ACCEPTED | 0.62 s | details |
#13 | TIME LIMIT EXCEEDED | -- | details |
#14 | TIME LIMIT EXCEEDED | -- | details |
#15 | TIME LIMIT EXCEEDED | -- | details |
#16 | ACCEPTED | 0.17 s | details |
#17 | ACCEPTED | 0.16 s | details |
#18 | ACCEPTED | 0.33 s | details |
#19 | ACCEPTED | 0.33 s | details |
#20 | ACCEPTED | 0.62 s | details |
#21 | TIME LIMIT EXCEEDED | -- | details |
#22 | TIME LIMIT EXCEEDED | -- | details |
#23 | ACCEPTED | 0.00 s | details |
Code
#include <bits/stdc++.h> using namespace std; //Definitions for quicker writing #define REP(i,a,b) for (int i = a; i < b; i++) #define PB push_back #define MP make_pair #define F first #define S second //Typedefs for quicker writing typedef long long ll; typedef vector<int> vi; typedef vector<long long> vl; typedef pair<int,int> pi; typedef pair<long long, long long> pl; //Max values const long long lmx = LLONG_MAX; const int imx = INT_MAX; int main() { //IO optimization ios::sync_with_stdio(0); cin.tie(0); //Input definition int n; ll sum; //Read In cin >> n >> sum; ll val[n]; REP(i,0,n) cin >> val[i]; //Main part bool imp = true; ll first, second, third; string res = ""; REP(i,0,n-2){ if(!imp) break; unordered_set<ll> s; map<ll,ll> ref; ll cursum = sum - val[i]; REP(j,i+1,n){ ll need = cursum - val[j]; if(s.find(need)!= s.end()){ first = i+1; second = j+1; third = ref[need] + 1; imp = false; } if(!imp) break; s.insert(val[j]); ref[val[j]] = j; } } //Write out if(imp) cout << "IMPOSSIBLE" << "\n"; else cout << first << " " << second << " " << third << "\n"; //Return return 0; }
Test details
Test 1
Verdict: ACCEPTED
input |
---|
1 3 1 |
correct output |
---|
IMPOSSIBLE |
user output |
---|
IMPOSSIBLE |
Test 2
Verdict: ACCEPTED
input |
---|
3 5 1 3 2 |
correct output |
---|
IMPOSSIBLE |
user output |
---|
IMPOSSIBLE |
Test 3
Verdict: ACCEPTED
input |
---|
3 6 1 3 2 |
correct output |
---|
1 3 2 |
user output |
---|
1 3 2 |
Test 4
Verdict: ACCEPTED
input |
---|
3 7 3 2 1 |
correct output |
---|
IMPOSSIBLE |
user output |
---|
IMPOSSIBLE |
Test 5
Verdict: ACCEPTED
input |
---|
7 3 2 1 1 2 2 1 1 |
correct output |
---|
2 3 7 |
user output |
---|
2 6 3 |
Test 6
Verdict: ACCEPTED
input |
---|
7 4 1 1 2 2 1 2 1 |
correct output |
---|
1 2 6 |
user output |
---|
1 3 2 |
Test 7
Verdict: ACCEPTED
input |
---|
7 5 1 2 1 2 2 1 1 |
correct output |
---|
1 2 5 |
user output |
---|
1 4 2 |
Test 8
Verdict: ACCEPTED
input |
---|
7 6 2 1 1 1 1 2 2 |
correct output |
---|
1 6 7 |
user output |
---|
1 7 6 |
Test 9
Verdict: ACCEPTED
input |
---|
5000 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
correct output |
---|
1 2 5000 |
user output |
---|
1 3 2 |
Test 10
Verdict: ACCEPTED
input |
---|
5000 4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
correct output |
---|
IMPOSSIBLE |
user output |
---|
IMPOSSIBLE |
Test 11
Verdict: ACCEPTED
input |
---|
5000 6 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
correct output |
---|
714 3518 4240 |
user output |
---|
714 4240 3518 |
Test 12
Verdict: ACCEPTED
input |
---|
5000 919900245 663612758 9075403 585385629 98... |
correct output |
---|
2787 465 2266 |
user output |
---|
295 2507 2481 |
Test 13
Verdict: TIME LIMIT EXCEEDED
input |
---|
5000 999989608 12983 25966 38949 51932 64915 ... |
correct output |
---|
IMPOSSIBLE |
user output |
---|
(empty) |
Test 14
Verdict: TIME LIMIT EXCEEDED
input |
---|
5000 1000000000 65536 131072 196608 262144 327... |
correct output |
---|
IMPOSSIBLE |
user output |
---|
(empty) |
Test 15
Verdict: TIME LIMIT EXCEEDED
input |
---|
5000 642700000 6427 12854 19281 25708 32135 3... |
correct output |
---|
IMPOSSIBLE |
user output |
---|
(empty) |
Test 16
Verdict: ACCEPTED
input |
---|
5000 919900246 663612758 9075403 585385629 98... |
correct output |
---|
193 1698 4019 |
user output |
---|
76 3319 2564 |
Test 17
Verdict: ACCEPTED
input |
---|
5000 919900247 663612758 9075403 585385629 98... |
correct output |
---|
4258 470 1911 |
user output |
---|
71 4858 432 |
Test 18
Verdict: ACCEPTED
input |
---|
5000 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 ... |
correct output |
---|
4998 4999 5000 |
user output |
---|
4998 5000 4999 |
Test 19
Verdict: ACCEPTED
input |
---|
5000 919900247 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
correct output |
---|
IMPOSSIBLE |
user output |
---|
IMPOSSIBLE |
Test 20
Verdict: ACCEPTED
input |
---|
4999 919900245 9075403 585385629 987230075 83... |
correct output |
---|
2786 464 2265 |
user output |
---|
294 2506 2480 |
Test 21
Verdict: TIME LIMIT EXCEEDED
input |
---|
5000 1000000000 261323261 25262018 237798562 3... |
correct output |
---|
IMPOSSIBLE |
user output |
---|
(empty) |
Test 22
Verdict: TIME LIMIT EXCEEDED
input |
---|
5000 76305003 1 5088 10175 15262 20349 25436... |
correct output |
---|
IMPOSSIBLE |
user output |
---|
(empty) |
Test 23
Verdict: ACCEPTED
input |
---|
2 6 2 2 |
correct output |
---|
IMPOSSIBLE |
user output |
---|
IMPOSSIBLE |