Submission #1368149

#TimeUsernameProblemLanguageResultExecution timeMemory
1368149vjudge1Table Tennis (info1cup20_tabletennis)C++20
15 / 100
37 ms11084 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    ll a, b; cin >> a >> b;
    vector <ll> v(a + b + 1);
    for (int i = 1; i <= a + b; i++) cin >> v[i];
    vector <ll> ans;
    if (a + b <= 4 * b){
        for (int i = 1; i <= b + 1; i++){
            bool found = false;
            for (int j = a; j <= a + b; j++){
                vector <ll> res;
                ll l = 1, r = a + b;
                while (l < r){
                    if (v[l] + v[r] == v[i] + v[j]){
                        res.push_back(v[l]);
                        res.push_back(v[r]);
                        l++; r--;
                    }
                    else if (v[l] + v[r] < v[i] + v[j]) l++;
                    else r--;
                }
                if (res.size() == a){
                    ans = res;
                    found = true;
                    break;
                }
            }
            if (found) break;
        }
    }
    else{
        vector <ll> cand;
        map <ll, ll> counter;
        for (int i = 1; i <= b; i++){
            for (int j = a; j <= a + b; j++){
                counter[v[i] + v[j]]++;
            }
        }
        for (auto [sum, cnt] : counter){
            if (cnt >= b) cand.push_back(sum);
        }
        for (auto x : cand){
            vector <ll> res;
            ll l = 1, r = a + b;
            while (l < r){
                if (v[l] + v[r] == x){
                    res.push_back(v[l]);
                    res.push_back(v[r]);
                    l++; r--;
                }
                else if (v[l] + v[r] < x) l++;
                else r--;
            }
            if (res.size() == a){
                ans = res;
                break;
            }
        }
    }
    sort(ans.begin(), ans.end());
    for (auto x : ans) cout << x << " ";
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...