Submission #1317679

#TimeUsernameProblemLanguageResultExecution timeMemory
1317679tuncay_pashaTable Tennis (info1cup20_tabletennis)C++20
24 / 100
3092 ms12864 KiB
#include <bits/stdc++.h> using namespace std; void solve() { int n, k; if (!(cin >> n >> k)) return; int m = n + k; vector<long long> a(m); for (int i = 0; i < m; i++) cin >> a[i]; // Diziyi sıralamak Two Pointers için şart sort(a.begin(), a.end()); // Olası toplam adaylarını (S) belirliyoruz. // Doğru S, ilk 2K eleman içinden en az iki elemanın toplamı olmalıdır. set<long long> candidates; int limit = min(m, 2 * k + 2); for (int i = 0; i < limit; i++) { for (int j = i + 1; j < limit; j++) { candidates.insert(a[i] + a[j]); } } // Her aday toplamı Two Pointers ile test et for (long long S : candidates) { vector<long long> result; int L = 0, R = m - 1; while (L < R && result.size() < n) { if (a[L] + a[R] == S) { result.push_back(a[L]); result.push_back(a[R]); L++; R--; } else if (a[L] + a[R] < S) { L++; } else { R--; } } // Eğer n eleman bulduysak (n çift olduğu için tam eşleşme gerekir) if (result.size() == n) { sort(result.begin(), result.end()); for (int i = 0; i < n; i++) { cout << result[i] << (i == n - 1 ? "" : " "); } cout << endl; return; } } } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); 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...