제출 #1346594

#제출 시각아이디문제언어결과실행 시간메모리
1346594bakhtiyarnTable Tennis (info1cup20_tabletennis)C++20
100 / 100
41 ms10932 KiB
#include <bits/stdc++.h>
using namespace std;

const int N = 3e5+5;
int a[N];
int n, k;

vector<int> build(int sm){
  vector<int> ans;
  int l = 1, r = n+k;
  while(l < r){
    if(a[l] + a[r] > sm) {
      r--;
    }
    else if(a[l]+a[r] < sm) {
      l++;
    }
    else {
      if(ans.size()*2 >= n) break;
      ans.push_back(a[l++]);
      r--;
    }
  }
  if(ans.size()*2 < n) return {};
  while(ans.size()*2 > n) ans.pop_back();
  
  int sz = ans.size();
  for(int i=sz-1; i>=0; i--) ans.push_back(sm-ans[i]);
  return ans;
}

// for(int i=1; i<=n; i++) 
void solve(){
  cin >> n >> k;
  for(int i=1; i<=n+k; i++) cin >> a[i];
  
  map<int, int> mp; int mx = 0;
  for(int r=n+k; r>=n-5; r--){
    for(int l=1; l<=5+k; l++){
      if(l >= r) break;
      int sm = a[l] + a[r];
      mp[sm]++; mx = max(mx, mp[sm]);
    }
  }
  for(auto [i, j]: mp) {
    if(j != mx) continue;
    // 
      vector<int> ans = build(i);
      if(ans.size()) {
        for(int i: ans) cout << i << " ";
        return;
      }
    // 
  }
}

signed main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  solve();
}
#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...