Submission #1317674

#TimeUsernameProblemLanguageResultExecution timeMemory
1317674tuncay_pashaTable Tennis (info1cup20_tabletennis)C++20
87 / 100
3112 ms470436 KiB
#include <bits/stdc++.h>
using namespace std;

int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n, k;
    cin >> n >> k;
    int m = n + k;

    vector<int> a(m);
    for(int i = 0; i < m; i++) cin >> a[i];

    if(k == 1) k++;

    int LIM = min(m, 2 * k);

    // collect sums
    vector<int> sums;
    sums.reserve((long long)LIM * m);

    for(int i = 0; i < LIM; i++){
        for(int j = i + 1; j < m; j++){
            sums.push_back(a[i] + a[j]);
        }
    }

    // sort sums
    sort(sums.begin(), sums.end());

    // extract most frequent sums
    vector<pair<int,int>> cand; // {count, sum}
    for(int i = 0; i < (int)sums.size(); ){
        int j = i;
        while(j < (int)sums.size() && sums[j] == sums[i]) j++;
        cand.push_back({j - i, sums[i]});
        i = j;
    }

    sort(cand.rbegin(), cand.rend());
    if((int)cand.size() > 100) cand.resize(100);

    // build frequency of values
    unordered_map<int,int> freq;
    freq.reserve(m * 2);
    for(int x : a) freq[x]++;

    // try candidates
    for(auto [_, S] : cand){
        vector<int> res;
        res.reserve(n);

        for(int x : a){
            int y = S - x;
            if(y != x){
                if(freq.count(y)) res.push_back(x);
            }else{
                if(freq[x] > 1) res.push_back(x);
            }
            if((int)res.size() > n) break;
        }

        if((int)res.size() == n){
            for(int x : res) cout << x << ' ';
            cout << '\n';
            return 0;
        }
    }

    return 0;
}
// test ucun btw :D
#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...