# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1104765 | abushbandit_ | Table Tennis (info1cup20_tabletennis) | C++17 | 0 ms | 0 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.
#pragma GCC target("avx,avx2,fma")
#pragma GCC optimize("Ofast,unroll-loops")
#include "bits/stdc++.h"
using namespace std;
#ifndef ONLINE_JUDGE
#include "debug.h"
#else
#define debug(...)
#define debugArr(...)
#endif
#define int long long
#define all(x) x.begin(),x.end()
#define ff first
#define ss second
#define pb push_back
template<class T, class U> inline bool chmin(T& a, const U& b) { if (a > b) { a = b; return true; } return false; }
template<class T, class U> inline bool chmax(T& a, const U& b) { if (a < b) { a = b; return true; } return false; }
const int inf = 1e9;
const int mod = 1e9 + 7;
const int N = 1e5 + 5;
void solve() {
int n,k;
cin >> n >> k;
int m = n;
n += k;
int a[n + 1];
for(int i = 1;i <= n;i++) cin >> a[i];
sort(a + 1,a + n + 1);
for(int l = 1;l <= k + 1;l++) {
int rem = (k + 1) - l;
for(int r = n;r >= n - rem;r--) {
if(r - l + 1 < m) {
continue;
}
int cnt = 0;
int nl = l,nr = r;
int sum = a[r] + a[l];
while(l < r) {
if(a[r] + a[l] == sum) {
r--;
l++;
cnt += 2;
} else if(a[r] + a[l] > sum) {
r--;
} else {
l++;
}
}
l = nl,r = nr;
if(cnt == m) {
set<int> ans;
while(l < r) {
if(a[r] + a[l] == sum) {
ans.insert(a[r]);
ans.insert(a[l]);
r--;
l++;
} else if(a[r] + a[l] > sum) {
r--;
} else {
l++;
}
}
for(auto i : ans) cout << i << " ";
return;
}
}
}
}
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);cout.tie(nullptr);
int t = 1;
//~ cin >> t;
while(t--) {
solve();
}
}