Task: | 3SUM |
Sender: | minghao |
Submission time: | 2024-10-21 16:48:51 +0300 |
Language: | C++ (C++20) |
Status: | READY |
Result: | TIME LIMIT EXCEEDED |
test | verdict | time | |
---|---|---|---|
#1 | ACCEPTED | 0.23 s | details |
#2 | ACCEPTED | 0.23 s | details |
#3 | ACCEPTED | 0.23 s | details |
#4 | ACCEPTED | 0.23 s | details |
#5 | ACCEPTED | 0.23 s | details |
#6 | ACCEPTED | 0.23 s | details |
#7 | ACCEPTED | 0.23 s | details |
#8 | ACCEPTED | 0.23 s | details |
#9 | ACCEPTED | 0.58 s | details |
#10 | ACCEPTED | 0.58 s | details |
#11 | ACCEPTED | 0.58 s | details |
#12 | TIME LIMIT EXCEEDED | -- | details |
#13 | ACCEPTED | 0.83 s | details |
#14 | ACCEPTED | 0.83 s | details |
#15 | ACCEPTED | 0.81 s | details |
#16 | TIME LIMIT EXCEEDED | -- | details |
#17 | TIME LIMIT EXCEEDED | -- | details |
#18 | ACCEPTED | 0.58 s | details |
#19 | ACCEPTED | 0.62 s | details |
#20 | TIME LIMIT EXCEEDED | -- | details |
#21 | TIME LIMIT EXCEEDED | -- | details |
#22 | ACCEPTED | 0.81 s | details |
#23 | ACCEPTED | 0.23 s | details |
Compiler report
input/code.cpp: In function 'void Test()': input/code.cpp:23:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result] 23 | freopen("temp\\in.txt", "r", stdin); | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~ input/code.cpp: In function 'int main()': input/code.cpp:36:28: warning: 'cur' may be used uninitialized in this function [-Wmaybe-uninitialized] 36 | sort(nodes+1, nodes+cur+1); | ~~~~~~~~~^~
Code
#include<bits/stdc++.h> using namespace std; typedef long long LL; const int N=5005; struct Node { int value; int p1, p2; Node(int v_=0, int p1_=0, int p2_=0): value(v_), p1(p1_), p2(p2_) {} bool operator < (const Node& node_)const { return value < node_.value; } }nodes[N*N]; int a[N]; set<Node> s; void Test() { freopen("temp\\in.txt", "r", stdin); } int main() { // Test(); int n, x, cur; cin >> n >> x; for(int i=1; i<=n; i++) cin >> a[i]; for(int i=1; i<=n; i++) for(int j=i+1; j<=n; j++) nodes[++cur] = Node(a[i] + a[j], i, j); sort(nodes+1, nodes+cur+1); for(int i=1; i<=n; i++) { // check x - a[i] int left = x - a[i]; auto it = lower_bound(nodes+1, nodes+cur+1, Node(left, 0, 0)); if(it == nodes+cur+1) continue; auto node = *it; if(i != node.p1 && i != node.p2 && left == node.value) { cout << i << " " << node.p1 << " " << node.p2; return 0; } } cout << "IMPOSSIBLE"; 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 2 3 |
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 |
---|
3 2 7 |
Test 6
Verdict: ACCEPTED
input |
---|
7 4 1 1 2 2 1 2 1 |
correct output |
---|
1 2 6 |
user output |
---|
1 6 7 |
Test 7
Verdict: ACCEPTED
input |
---|
7 5 1 2 1 2 2 1 1 |
correct output |
---|
1 2 5 |
user output |
---|
1 2 4 |
Test 8
Verdict: ACCEPTED
input |
---|
7 6 2 1 1 1 1 2 2 |
correct output |
---|
1 6 7 |
user output |
---|
6 1 7 |
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 2114 2226 |
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 |
---|
3518 714 4240 |
Test 12
Verdict: TIME LIMIT EXCEEDED
input |
---|
5000 919900245 663612758 9075403 585385629 98... |
correct output |
---|
2787 465 2266 |
user output |
---|
(empty) |
Test 13
Verdict: ACCEPTED
input |
---|
5000 999989608 12983 25966 38949 51932 64915 ... |
correct output |
---|
IMPOSSIBLE |
user output |
---|
IMPOSSIBLE |
Test 14
Verdict: ACCEPTED
input |
---|
5000 1000000000 65536 131072 196608 262144 327... |
correct output |
---|
IMPOSSIBLE |
user output |
---|
IMPOSSIBLE |
Test 15
Verdict: ACCEPTED
input |
---|
5000 642700000 6427 12854 19281 25708 32135 3... |
correct output |
---|
IMPOSSIBLE |
user output |
---|
IMPOSSIBLE |
Test 16
Verdict: TIME LIMIT EXCEEDED
input |
---|
5000 919900246 663612758 9075403 585385629 98... |
correct output |
---|
193 1698 4019 |
user output |
---|
(empty) |
Test 17
Verdict: TIME LIMIT EXCEEDED
input |
---|
5000 919900247 663612758 9075403 585385629 98... |
correct output |
---|
4258 470 1911 |
user output |
---|
(empty) |
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 4999 5000 |
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: TIME LIMIT EXCEEDED
input |
---|
4999 919900245 9075403 585385629 987230075 83... |
correct output |
---|
2786 464 2265 |
user output |
---|
(empty) |
Test 21
Verdict: TIME LIMIT EXCEEDED
input |
---|
5000 1000000000 261323261 25262018 237798562 3... |
correct output |
---|
IMPOSSIBLE |
user output |
---|
(empty) |
Test 22
Verdict: ACCEPTED
input |
---|
5000 76305003 1 5088 10175 15262 20349 25436... |
correct output |
---|
IMPOSSIBLE |
user output |
---|
IMPOSSIBLE |
Test 23
Verdict: ACCEPTED
input |
---|
2 6 2 2 |
correct output |
---|
IMPOSSIBLE |
user output |
---|
IMPOSSIBLE |