# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
675145 | SanguineChameleon | Table Tennis (info1cup20_tabletennis) | C++17 | 73 ms | 3152 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
// BEGIN BOILERPLATE CODE
#include <bits/stdc++.h>
using namespace std;
#ifdef KAMIRULEZ
const bool kami_loc = true;
const long long kami_seed = 69420;
#else
const bool kami_loc = false;
const long long kami_seed = chrono::steady_clock::now().time_since_epoch().count();
#endif
const string kami_fi = "kamirulez.inp";
const string kami_fo = "kamirulez.out";
mt19937_64 kami_gen(kami_seed);
long long rand_range(long long rmin, long long rmax) {
uniform_int_distribution<long long> rdist(rmin, rmax);
return rdist(kami_gen);
}
long double rand_real(long double rmin, long double rmax) {
uniform_real_distribution<long double> rdist(rmin, rmax);
return rdist(kami_gen);
}
void file_io(string fi, string fo) {
if (fi != "" && (!kami_loc || fi == kami_fi)) {
freopen(fi.c_str(), "r", stdin);
}
if (fo != "" && (!kami_loc || fo == kami_fo)) {
freopen(fo.c_str(), "w", stdout);
}
}
void set_up() {
if (kami_loc) {
file_io(kami_fi, kami_fo);
}
ios_base::sync_with_stdio(0);
cin.tie(0);
}
void just_do_it();
void just_exec_it() {
if (kami_loc) {
auto pstart = chrono::steady_clock::now();
just_do_it();
auto pend = chrono::steady_clock::now();
long long ptime = chrono::duration_cast<chrono::milliseconds>(pend - pstart).count();
string bar(50, '=');
cout << '\n' << bar << '\n';
cout << "Time: " << ptime << " ms" << '\n';
}
else {
just_do_it();
}
}
int main() {
set_up();
just_exec_it();
return 0;
}
// END BOILERPLATE CODE
// BEGIN MAIN CODE
const int ms = 2e5 + 20;
int a[ms];
void just_do_it() {
int n, k;
cin >> n >> k;
int m = n + k;
for (int i = 1; i <= m; i++) {
cin >> a[i];
}
for (int i = 1; i <= k + 1; i++) {
for (int j = m - k; j <= m; j++) {
if (i >= j) {
continue;
}
int lt = i + 1;
int rt = j - 1;
int cc = i - 1 + m - j;
if (cc > k) {
continue;
}
int pc = 1;
bool ok = true;
while (lt < rt) {
if (a[lt] + a[rt] > a[i] + a[j]) {
cc++;
if (cc > k) {
ok = false;
break;
}
rt--;
}
else if (a[lt] + a[rt] < a[i] + a[j]) {
cc++;
if (cc > k) {
ok = false;
break;
}
lt++;
}
else {
pc++;
if (pc == n / 2) {
break;
}
lt++;
rt--;
}
}
if (!ok) {
continue;
}
vector<int> res;
res.push_back(a[i]);
res.push_back(a[j]);
lt = i + 1;
rt = j - 1;
while (lt < rt) {
if (a[lt] + a[rt] > a[i] + a[j]) {
rt--;
}
else if (a[lt] + a[rt] < a[i] + a[j]) {
lt++;
}
else {
res.push_back(a[lt]);
res.push_back(a[rt]);
lt++;
rt--;
}
}
sort(res.begin(), res.end());
for (auto x: res) {
cout << x << " ";
}
return;
}
}
}
// END MAIN CODE
Compilation message (stderr)
# | 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... |