Submission #1132582

#TimeUsernameProblemLanguageResultExecution timeMemory
1132582altern23Table Tennis (info1cup20_tabletennis)C++20
49 / 100
24 ms4388 KiB
#include <bits/stdc++.h>
using namespace std;
 
#pragma GCC optimize ("O2")
#pragma GCC optimize ("unroll-loops")
 
#define ll long long
#define pii pair<ll,ll>
#define fi first
#define sec second
#define ld long double

template <typename T>
ostream& operator << (ostream& os, vector<T>tmp){
    os << "[";
    for(auto x : tmp) os << " " << x;
    os << " ]";
 
    return os;
}
 
template <typename T>
ostream& operator << (ostream& os, set<T>tmp){
    os << "[";
    for(auto x : tmp) os << " " << x;
    os << " ]";
 
    return os;
}
 
template <typename T>
ostream& operator << (ostream& os, multiset<T>tmp){
    os << "[";
    for(auto x : tmp) os << " " << x;
    os << " ]";
 
    return os;
}
 
ostream& operator << (ostream& os, pii x){
    os << "[";
    os << " " << x.fi << " " << x.sec;
    os << " ]";
 
    return os;
}

const ll MOD = 998244353;
const ll N = 2e5 + 5;
const ll INF = 2e18;

// modulo operations
void add(ll &a, ll b) { a = (a + b) % MOD; }
void sub(ll &a, ll b) { a -= b; while(a < 0) a += MOD; a %= MOD; }
void mul(ll &a, ll b) { a = (a * b) % MOD; }

ll expo(ll a, ll b) {
    ll ans = 1;
    while(b > 0){
        if(b & 1) mul(ans, a);
        mul(a, a);
        b /= 2;
    }

    return ans;
}

ll ask(vector<ll> &v){
    cout << "? ";
    for(auto i : v) cout << i << " ";
    cout << endl;
    ll x; cin >> x;
    return x;
}

int32_t main(){
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    int tc = 1;
    // cin >> tc;
    for(;tc--;){
        ll n, k; cin >> n >> k;
        vector<ll>a(n + k + 5);
        for(int i = 1; i <= n + k; i++) cin >> a[i];

        vector<ll> ans;
        for(int i = 0; i <= k; i++){
            for(int j = 0; j <= k - i; j++){
                vector<ll> v;
                ll res = k - i - j;
                v.push_back(a[i + 1]), v.push_back(a[n + k - j]);
                ll L = i + 2, R = n + k - j - 1, sum = a[i + 1] + a[n + k - j];
                while(v.size() < n && res >= 0 && L <= R){
                    if(a[L] + a[R] == sum){
                        v.push_back(a[L]), v.push_back(a[R]);
                        L++, R--;
                    }
                    else{
                        if(a[L] + a[R] < sum){
                            R--;
                            res--;
                        }
                        else{
                            L++;
                            res--;
                        }
                    }
                }

                if((int)v.size() == n){
                    ans = v;
                    goto done;
                }
            }
        }

        done:
        sort(ans.begin(), ans.end());
        for(auto x : ans) cout << x << " ";
        cout << "\n";
    }   

}
 
/*

*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...