Submission #1264582

#TimeUsernameProblemLanguageResultExecution timeMemory
1264582podvorniyTable Tennis (info1cup20_tabletennis)C++20
100 / 100
127 ms11704 KiB
#include <iostream> #include <vector> #include <algorithm> #include <set> using namespace std; typedef long long ll; bool check(ll S, const vector<ll>& a, int N, int K, int M) { int total = a.size(); int left = 0, right = total - 1; int skips = 0; int pairs = 0; while (left < right && pairs < M && skips <= K) { if (a[left] + a[right] == S) { pairs++; left++; right--; } else if (a[left] + a[right] < S) { skips++; left++; } else { skips++; right--; } } if (skips > K) return false; if (pairs < M) { if (left == right) { skips++; } if (skips > K) return false; return pairs == M; } skips += (right - left + 1); return skips == K; } vector<ll> build_solution(ll S, const vector<ll>& a, int N, int K) { int total = a.size(); int left = 0, right = total - 1; vector<ll> taken; while (left <= right && taken.size() < N) { if (a[left] + a[right] == S) { taken.push_back(a[left]); taken.push_back(a[right]); left++; right--; } else if (a[left] + a[right] < S) { left++; } else { right--; } } sort(taken.begin(), taken.end()); return taken; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); int N, K; cin >> N >> K; int total = N + K; vector<ll> a(total); for (int i = 0; i < total; i++) { cin >> a[i]; } sort(a.begin(), a.end()); int M = N / 2; set<ll> candidates; for (int i = 0; i <= K; i++) { for (int j = total - 1; j >= total - 1 - K; j--) { candidates.insert(a[i] + a[j]); } } for (ll S : candidates) { if (check(S, a, N, K, M)) { vector<ll> sol = build_solution(S, a, N, K); for (size_t i = 0; i < sol.size(); i++) { cout << sol[i]; if (i < sol.size() - 1) cout << " "; } cout << endl; return 0; } } 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...