제출 #1232143

#제출 시각아이디문제언어결과실행 시간메모리
1232143khomeTable Tennis (info1cup20_tabletennis)C++20
64 / 100
3094 ms11324 KiB
#include <bits/stdc++.h>

using namespace std;
#define int unsigned long long

const int inf = 1e9;

void solve(){
    int n, k; cin >> n >> k;
    vector<int> a(n + k);
    set<int> st;
    for (int i = 0; i < n + k; i++ ) {cin >> a[i]; st.insert(a[i]);}

    // sort(a.begin(), a.end());
    auto check = [&](int x, int L, int R) -> void {
        vector<int> v; v.reserve(n);
        int l = L, r = R;
        while(l < r) {
            if(a[l] + a[r] == x) {
                v.push_back(a[l]);
                v.push_back(a[r]);
                l++;
                r--;
            } else if(a[l] + a[r] > x) {
                r--;
            } else {
                l++;
            }
        }

        if (v.size() == n){
            sort(v.begin(), v.end());
            for (int i : v) cout << i << ' '; cout << endl;
            exit(0);
        }
        return;
    };

    if(n < 3000) {
        for (int i = 0; i < k + 1; i++ ) {
            for (int j = i + n - 1; j < n + k; j++) {
                check(a[i] + a[j], i, j);
            }
        }
    } else {
        mt19937 rng(6324);
        while(true) {
            int i = rng() % k;
            int j = i + n - 1 + (rng() % (k - i + 1));
            if(i == j) continue;
            check(a[i] + a[j], i, j);
        }
    }

}

signed main(){
    cin.tie(0) -> sync_with_stdio(0);
    int t = 1;
    // cin >> t;
    while (t--)solve();
}



// 5 8 10 15 19
//   ^        ^
// 
// 23
#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...