Submission #1319658

#TimeUsernameProblemLanguageResultExecution timeMemory
1319658bearrbearrTable Tennis (info1cup20_tabletennis)C++20
100 / 100
547 ms5548 KiB
#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 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...