Submission #675132

#TimeUsernameProblemLanguageResultExecution timeMemory
675132vjudge1Table Tennis (info1cup20_tabletennis)C++17
100 / 100
421 ms32272 KiB
#include<bits/stdc++.h>
using namespace std;
 
#define f first
#define s second
 
typedef long long ll;
typedef long double ld;
 
typedef pair<ll, ll> pt;
 
int n, k, m;
 
const int maxn = 2e5+5;
 
const ll inf = 1e9+5;
 
int A[maxn];
 
map<int, int> mp;

bool chk(int x){
    int l = 0, r = m-1, cnt = 0;
    vector<int> vec;
    while(l < r){
        while(l < r && A[l]+A[r] > x)r--;
        if(l==r)break;
        if(A[l]+A[r] == x){
            cnt++;
            vec.push_back(A[l]);
            vec.push_back(A[r]);
            if(cnt == n/2){
                sort(vec.begin(), vec.end());
                for(auto v: vec)cout << v << " ";
                return 1;
            }
        }
        l++;
    }
    return 0;
}

int main(){
    cin >> n >> k;
    m = n+k;
    //cout << m << "\n";
    for(int i = 0; i < m; i++)cin >> A[i];
    for(int i = 0; i < min(m, 2*k); i++){
        for(int j = m-1; j >= max(m-2*k, i+1); j--){
            mp[A[i]+A[j]]++;
        }
    }
    for(auto v: mp)if(v.s >= min(k, n/2)){
        if(chk(v.f))return 0;
    }
}
#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...