제출 #524837

#제출 시각아이디문제언어결과실행 시간메모리
524837boykutTable Tennis (info1cup20_tabletennis)C++14
58 / 100
3102 ms595652 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 (n > 2000 && k == 2) { sort(a.begin(), a.end()); deque<int> ans, ans2; 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(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(); } 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 (check(a[i] + a[j], ans2)) { for (auto v : ans2) 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; }

컴파일 시 표준 에러 (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) {
      |          ~~~~~~~~~~~^~~
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 lambda function:
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 |    assert(ans.size() >= n);
      |           ~~~~~~~~~~~^~~~
tabletennis.cpp:80:22: warning: comparison of integer expressions of different signedness: 'std::deque<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   80 |    while (ans.size() > n) {
      |           ~~~~~~~~~~~^~~
tabletennis.cpp:84:19: warning: comparison of integer expressions of different signedness: 'std::deque<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   84 |    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:127:20: warning: comparison of integer expressions of different signedness: 'std::deque<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
  127 |  assert(ans.size() >= n);
      |         ~~~~~~~~~~~^~~~
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 |  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...