제출 #499899

#제출 시각아이디문제언어결과실행 시간메모리
499899jesus_coconutTable Tennis (info1cup20_tabletennis)C++17
9 / 100
3075 ms30916 KiB
#include <bits/stdc++.h> #define pb push_back #define all(a) begin(a), end(a) using namespace std; int n, k; vector<int> v; void load() { cin >> n >> k; v.resize(n + k); for (auto &it : v) cin >> it; } int const N = 150005; int ans[N]; bool solve(int suma) { int l = 0, r = n + k - 1; int cnt = 0; int p = 0; while (l < r && cnt <= k) { if (v[l] + v[r] == suma) { ans[p++] = v[l]; ans[p++] = v[r]; if (p == n) return true; ++l; --r; } else if (v[l] + v[r] < suma) { ++l; ++cnt; } else { --r; ++cnt; } } return false; } map<int, int> mp; void solve() { vector<int> tmp; for (int at = 1; ; ++at) { for (int t = 0; t < 100 * k; ++t) { int i = rand() % (n + k); int j = n + k - 1 - i - (rand() % (2 * k + 1)); if (i >= j || j >= n + k) continue; if (mp[v[i]+v[j]]++ == 0) { tmp.pb(v[i] + v[j]); }; } sort(all(tmp), [&](int const &a, int const &b) { return mp[a] > mp[b]; }); for (auto a: tmp) { if (solve(a)) { sort(ans, ans + n); for (int i = 0; i < n; ++i) { cout << ans[i] << ' '; } return; } } tmp.clear(); } } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); load(); sort(all(v)); solve(); 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...