제출 #1346525

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

const int N = 3e5+5;
unordered_map<int, int> pos;
int a[N];


vector<int> build(int l, int r, int sm, int k){
  int sz = r-l+1;
  vector<int> ans;
  
  while(l < r){
    if(a[l] + a[r] == sm) {
      ans.push_back(a[l]);
      ans.push_back(a[r]);
      l++, r--;
      continue;
    }
    if(a[l] + a[r] > sm){
      r--;
      continue;
    }
    break;
  }
  
  if(ans.size() >= sz - k) return ans;
  return {};
}

// for(int i=1; i<=n; i++) 
void solve(){
  int n, k; cin >> n >> k;
  for(int i=1; i<=n+k; i++) cin >> a[i];
  for(int i=1; i<=n+k; i++) pos[a[i]] = i;
  // build(1, 4, 5, 0);
  // return;
  for(int l=1; l<=2+k; l++){
    for(int r=n-2; r<=n+k; r++){
      if(l >= r) continue;
      int sm = a[l] + a[r];
      
      if(l-1 + n+k-r > k) continue;
      // 
        vector<int> ans = build(l, r, sm, k - (l-1 + n+k-r));
        if(ans.size()) {
          sort(ans.begin(), ans.end());
          while(ans.size() > r-l+1 - (k - (l-1 + n+k-r))) {
            ans.pop_back();
            ans.erase(ans.begin());
          }
          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...