Submission #668142

#TimeUsernameProblemLanguageResultExecution timeMemory
668142definitelynotmeeTable Tennis (info1cup20_tabletennis)C++98
100 / 100
68 ms4856 KiB
#include<bits/stdc++.h> using namespace std; #define ff first #define ss second #define all(x) x.begin(), x.end() using ll = long long; using pii = pair<int,int>; using pll = pair<ll,ll>; template<typename T> using matrix = vector<vector<T>>; int main(){ cin.tie(0)->sync_with_stdio(0); int n, k; cin >> n >> k; vector<int> v(n+k); for(int i = 0; i < n+k; i++) cin >> v[i]; vector<int> sums; int minmid = max(0,(n+k)/2-k/2-3), maxmid = min(n+k-1,(n+k)/2+k/2+3); for(int i = minmid; i <= maxmid; i++){ for(int j = i+1; j <= maxmid; j++) sums.push_back(v[i]+v[j]);//, cout << v[i]+v[j] << '\n'; } sort(all(sums)); sums.erase(unique(all(sums)),sums.end()); auto findans =[&](int sum){ int p1 = 0, p2 = n+k-1; vector<int> resp; while(p1 < p2){ if(v[p1] + v[p2] > sum){ p2--; continue; } if(v[p1] + v[p2] < sum){ p1++; continue; } resp.push_back(v[p1]), resp.push_back(v[p2]); p1++, p2--; } sort(all(resp)); for(int i = 0; i < n; i++) cout << resp[i] << ' '; cout << '\n'; }; for(int sum : sums){ int resp = 0; int p1 = 0, p2 = n+k-1; int fail = k+1; while(p1 < p2 && fail){ if(v[p1] + v[p2] > sum){ p2--; fail--; continue; } if(v[p1] + v[p2] < sum){ p1++; fail--; continue; } p1++, p2--; resp++; } if(resp >= n/2){ findans(sum); return 0; } } //exit(1); }
#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...