Submission #524847

#TimeUsernameProblemLanguageResultExecution timeMemory
524847boykutTable Tennis (info1cup20_tabletennis)C++14
72 / 100
3110 ms617024 KiB
#include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); int n, k; cin >> n >> k; vector<int> a(n + k); map<int, int> cnt; for (int i = 0; i < n + k; i++) { cin >> a[i]; } if (k == 1) { sort(a.begin(), a.end()); int sum = a[0] + a[n + k - 2], ok = 1; for (int l = 0, r = n + k - 2; l < r; l++, r--) { if (a[l] + a[r] != sum) ok = 0; } if (ok) { for (int i = 0; i < n + k - 1; i++) cout << a[i] << ' '; cout << '\n'; return 0; } sum = a[1] + a[n + k - 1], ok = 1; for (int l = 1, r = n + k - 1; l < r; l++, r--) { if (a[l] + a[r] != sum) ok = 0; } if (ok) { for (int i = 1; i < n + k; i++) cout << a[i] << ' '; cout << '\n'; return 0; } sum = a[0] + a[n + k - 1]; set<int> st(a.begin(), a.end()); deque<int> ans; for (int i = 0; i < n + k; i++) { if (st.count(sum - a[i])) { ans.push_back(a[i]); ans.push_back(sum - a[i]); st.erase(sum - a[i]); st.erase(a[i]); } } sort(ans.begin(), ans.end()); assert(ans.size() >= n); while (ans.size() > n) { ans.pop_back(); ans.pop_front(); } for (int v : ans) cout << v << ' '; return 0; } if (k == 2) { sort(a.begin(), a.end()); auto check = [&](int sum, deque<int> & ans) ->int { set<int> st(a.begin(), a.end()); ans.clear(); for (int i = 0; i < n + k; i++) { if (st.count(a[i]) && st.count(sum - a[i]) && a[i] != sum - a[i]) { ans.push_back(a[i]); ans.push_back(sum - a[i]); st.erase(sum - a[i]); st.erase(a[i]); } } sort(ans.begin(), ans.end()); if (ans.size() < n) return 0; while (ans.size() > n) { ans.pop_back(); ans.pop_front(); } if (ans.size() == n) return 1; return 0; }; for (int i = 0; i <= k; i++) { for (int j = n - 1; j < n + k; j++) { if (i >= j) continue; deque<int> ans; if (check(a[i] + a[j], ans)) { for (auto v : ans) cout << v << ' '; return 0; } } } return 0; } for (int i = 0; i < n + k; i++) { for (int j = i + 1; j < n + k; j++) { cnt[a[i] + a[j]]++; } } int mx = -1, sum = -1; for (auto it : cnt) { if (it.second > mx) mx = it.second, sum = it.first; } assert(sum != -1); set<int> st(a.begin(), a.end()); deque<int> ans; for (int i = 0; i < n + k; i++) { if (st.count(sum - a[i])) { ans.push_back(a[i]); ans.push_back(sum - a[i]); st.erase(sum - a[i]); st.erase(a[i]); } } sort(ans.begin(), ans.end()); assert(ans.size() >= n); while (ans.size() > n) { ans.pop_back(); ans.pop_front(); } for (int v : ans) cout << v << ' '; return 0; }

Compilation message (stderr)

In file included from /usr/include/c++/10/cassert:44,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:33,
                 from tabletennis.cpp:1:
tabletennis.cpp: In function 'int main()':
tabletennis.cpp:52:21: warning: comparison of integer expressions of different signedness: 'std::deque<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   52 |   assert(ans.size() >= n);
      |          ~~~~~~~~~~~^~~~
tabletennis.cpp:53:21: warning: comparison of integer expressions of different signedness: 'std::deque<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   53 |   while (ans.size() > n) {
      |          ~~~~~~~~~~~^~~
tabletennis.cpp: In lambda function:
tabletennis.cpp:78:19: warning: comparison of integer expressions of different signedness: 'std::deque<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   78 |    if (ans.size() < n) return 0;
      |        ~~~~~~~~~~~^~~
tabletennis.cpp:79:22: warning: comparison of integer expressions of different signedness: 'std::deque<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   79 |    while (ans.size() > n) {
      |           ~~~~~~~~~~~^~~
tabletennis.cpp:83:19: warning: comparison of integer expressions of different signedness: 'std::deque<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   83 |    if (ans.size() == n) return 1;
      |        ~~~~~~~~~~~^~~~
In file included from /usr/include/c++/10/cassert:44,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:33,
                 from tabletennis.cpp:1:
tabletennis.cpp: In function 'int main()':
tabletennis.cpp:128:20: warning: comparison of integer expressions of different signedness: 'std::deque<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
  128 |  assert(ans.size() >= n);
      |         ~~~~~~~~~~~^~~~
tabletennis.cpp:129:20: warning: comparison of integer expressions of different signedness: 'std::deque<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
  129 |  while (ans.size() > n) {
      |         ~~~~~~~~~~~^~~
#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...