제출 #1317674

#제출 시각아이디문제언어결과실행 시간메모리
1317674tuncay_pashaTable Tennis (info1cup20_tabletennis)C++20
87 / 100
3112 ms470436 KiB
#include <bits/stdc++.h> using namespace std; int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int n, k; cin >> n >> k; int m = n + k; vector<int> a(m); for(int i = 0; i < m; i++) cin >> a[i]; if(k == 1) k++; int LIM = min(m, 2 * k); // collect sums vector<int> sums; sums.reserve((long long)LIM * m); for(int i = 0; i < LIM; i++){ for(int j = i + 1; j < m; j++){ sums.push_back(a[i] + a[j]); } } // sort sums sort(sums.begin(), sums.end()); // extract most frequent sums vector<pair<int,int>> cand; // {count, sum} for(int i = 0; i < (int)sums.size(); ){ int j = i; while(j < (int)sums.size() && sums[j] == sums[i]) j++; cand.push_back({j - i, sums[i]}); i = j; } sort(cand.rbegin(), cand.rend()); if((int)cand.size() > 100) cand.resize(100); // build frequency of values unordered_map<int,int> freq; freq.reserve(m * 2); for(int x : a) freq[x]++; // try candidates for(auto [_, S] : cand){ vector<int> res; res.reserve(n); for(int x : a){ int y = S - x; if(y != x){ if(freq.count(y)) res.push_back(x); }else{ if(freq[x] > 1) res.push_back(x); } if((int)res.size() > n) break; } if((int)res.size() == n){ for(int x : res) cout << x << ' '; cout << '\n'; return 0; } } return 0; } // test ucun btw :D
#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...