#include <iostream>
#include <vector>
#include <algorithm>
#include <random>
int main() {
int n, k;
std::cin >> n >> k;
std::vector<int> arr(n + k);
for (int i = 0; i < n; ++i) {
std::cin >> arr[i];
}
std::random_device rd;
std::mt19937 gen(rd());
while (true) {
std::uniform_int_distribution<> dis1(0, std::min(n + k - 1, k + 15));
std::uniform_int_distribution<> dis2(0, n + k - 1);
int i = dis1(gen);
int j = dis2(gen);
if (i + j >= n + k) continue;
int s = arr[i] + arr[i + j];
int l = 0, r = n + k - 1;
int f = 0;
while (l < r && f < n) {
if (arr[l] + arr[r] < s) {
l++;
} else if (arr[l] + arr[r] > s) {
r--;
} else {
f += 2;
l++;
r--;
}
}
if (f == n) {
int oks = s;
std::vector<int> ja;
l = 0; r = n + k - 1;
while (l < r && ja.size() < n) {
if (arr[l] + arr[r] < oks) {
l++;
} else if (arr[l] + arr[r] > oks) {
r--;
} else {
ja.push_back(arr[l]);
ja.push_back(arr[r]);
l++;
r--;
}
}
std::sort(ja.begin(), ja.end());
for (const auto& val : ja) {
std::cout << val << ' ';
}
break;
}
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |