Submission #1161329

#TimeUsernameProblemLanguageResultExecution timeMemory
116132912345678Table Tennis (info1cup20_tabletennis)C++20
87 / 100
3060 ms5924 KiB
#include <bits/stdc++.h> using namespace std; const int nx=2e5+5, kx=405; mt19937 rng(time(0)); int n, k, sz, dp[nx]; vector<int> v ,res; set<int> s; vector<pair<int, int>> ran; int main() { cin.tie(NULL)->sync_with_stdio(false); cin>>n>>k; sz=n+k; v.resize(sz); for (auto &x:v) cin>>x; for (int l=0; l<=k; l++) for (int r=0; r+l<=k; r++) s.insert(v[l]+v[sz-1-r]); for (auto x:s) ran.push_back({rng(), x}); sort(ran.begin(), ran.end()); for (auto [k, sm]:ran) { int idx=sz-1, cnt=0; for (int i=0; i<sz; i++) { dp[i]=-1; while (idx>i&&v[i]+v[idx]>sm) idx--; if (idx<=i) break; if (v[i]+v[idx]==sm) dp[i]=idx, cnt+=2; } //cout<<"sm "<<sm<<' '<<cnt<<'\n'; if (cnt>=n) { cnt=n; for (int i=0; i<sz; i++) { if (!cnt) continue; if (dp[i]!=-1) { res.push_back(v[i]); res.push_back(v[dp[i]]); cnt-=2; } } sort(res.begin(), res.end()); for (auto x:res) cout<<x<<' '; 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...