제출 #524831

#제출 시각아이디문제언어결과실행 시간메모리
524831boykutTable Tennis (info1cup20_tabletennis)C++14
58 / 100
3100 ms803032 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;
	}

	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:88:20: warning: comparison of integer expressions of different signedness: 'std::deque<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   88 |  assert(ans.size() >= n);
      |         ~~~~~~~~~~~^~~~
tabletennis.cpp:89:20: warning: comparison of integer expressions of different signedness: 'std::deque<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   89 |  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...