Task: | 3SUM |
Sender: | snude |
Submission time: | 2024-10-21 16:49:14 +0300 |
Language: | C++ (C++11) |
Status: | READY |
Result: | ACCEPTED |
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.02 s | details |
#11 | ACCEPTED | 0.02 s | details |
#12 | ACCEPTED | 0.01 s | details |
#13 | ACCEPTED | 0.02 s | details |
#14 | ACCEPTED | 0.02 s | details |
#15 | ACCEPTED | 0.02 s | details |
#16 | ACCEPTED | 0.01 s | details |
#17 | ACCEPTED | 0.01 s | details |
#18 | ACCEPTED | 0.01 s | details |
#19 | ACCEPTED | 0.02 s | details |
#20 | ACCEPTED | 0.01 s | details |
#21 | ACCEPTED | 0.02 s | details |
#22 | ACCEPTED | 0.02 s | details |
#23 | ACCEPTED | 0.00 s | details |
Code
#include <algorithm> #include <cstdio> #include <iostream> #include <utility> #include <vector> #include <bits/stdc++.h> using namespace std; using ll = long long; // Debug printing #ifdef DEBUG #define deb(fmt, args...) printf("DEBUG: %d: " fmt, __LINE__, ##args) #else #define deb(fmt, args...) #endif void print_array(vector<int> in, const string title = "Vector") { cout << title << " [\n"; for (const auto& el : in) { cout << el << " "; } cout << "\n] END\n"; } void print_matrix(vector<vector<int>> in, const string title = "Matrix") { cout << title << "[\n"; for (unsigned int i = 0; i < in.size(); i++) { for (unsigned int j = 0; j < in[i].size(); j++) { cout << in[i][j] << " "; } cout << "\n"; } cout << "] END\n"; } int main(int argc, char *argv[]) { // Read the input parameters int n, t; cin >> n >> t; // Read values from one line // vector<vector<int>> A(n, vector<int>(t)); vector<pair<int, int>> in(n); int tmp; for (int i = 0; i < n; i++) { cin >> tmp; in[i] = {tmp, i + 1}; } sort(in.begin(), in.end()); for (int i = 0; i < n - 2; i++) { // skip duplicates if (i > 0 && in[i] == in[i - 1]) continue; int l = i + 1; int r = n - 1; int sum = t - in[i].first; int s; while (l < r) { s = in[l].first + in[r].first; if (s == sum) { printf("%d %d %d\n", in[i].second, in[l].second, in[r].second); return 0; } if (s > sum) { r--; } else { l++; } } } cout << "IMPOSSIBLE\n"; 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 3 7 |
Test 6
Verdict: ACCEPTED
input |
---|
7 4 1 1 2 2 1 2 1 |
correct output |
---|
1 2 6 |
user output |
---|
1 2 6 |
Test 7
Verdict: ACCEPTED
input |
---|
7 5 1 2 1 2 2 1 1 |
correct output |
---|
1 2 5 |
user output |
---|
1 2 5 |
Test 8
Verdict: ACCEPTED
input |
---|
7 6 2 1 1 1 1 2 2 |
correct output |
---|
1 6 7 |
user output |
---|
1 6 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 2 5000 |
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 3518 4240 |
Test 12
Verdict: ACCEPTED
input |
---|
5000 919900245 663612758 9075403 585385629 98... |
correct output |
---|
2787 465 2266 |
user output |
---|
2787 465 2266 |
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: ACCEPTED
input |
---|
5000 919900246 663612758 9075403 585385629 98... |
correct output |
---|
193 1698 4019 |
user output |
---|
193 1698 4019 |
Test 17
Verdict: ACCEPTED
input |
---|
5000 919900247 663612758 9075403 585385629 98... |
correct output |
---|
4258 470 1911 |
user output |
---|
4258 470 1911 |
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: ACCEPTED
input |
---|
4999 919900245 9075403 585385629 987230075 83... |
correct output |
---|
2786 464 2265 |
user output |
---|
2786 464 2265 |
Test 21
Verdict: ACCEPTED
input |
---|
5000 1000000000 261323261 25262018 237798562 3... |
correct output |
---|
IMPOSSIBLE |
user output |
---|
IMPOSSIBLE |
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 |