#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize("O3,unroll-loops")
#define int long long
#define ii pair<int,int>
#define fir first
#define sec second
#define pb push_back
const int maxn=2e5;
ii a[maxn+1];
int n,k;
vector<int>ans;
bool bisa(int sum){
ans.clear();
int r=n+k;
for(int l=1;l<=n+k && l<=r;l++){
while(a[l].fir+a[r].fir>sum && r>0)r--;
if(l>=r)break;
if(a[l].fir+a[r].fir==sum){
ans.push_back(a[l].fir); ans.push_back(a[r].fir);
r--;
}
}
if(ans.size()>=n)return true;
return false;
}
mt19937 rnd(232323);
signed main(){
cin>>n>>k;
for(int q=1;q<=n+k;q++){
cin>>a[q].fir;
a[q].sec=q;
}
sort(a+1,a+n+k+1);
uniform_int_distribution<int>uid(1,n+k-1);
while(true){
int satu=uid(rnd);
bool yey=false;
for(int lain=n+1-satu;lain<=n+k;lain++){
if(lain<=0)continue;
if(satu>k){
int mx=n+2*k+1-lain;
if(mx<lain)break;
}
bool ok=bisa(a[lain].fir+a[satu].fir);
if(ok){
yey=true;
break;
}
}
if(yey)break;
}
sort(ans.begin(),ans.end());
for(auto x : ans){
cout<<x<<' ';
}
cout<<endl;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |