Submission #339160

#TimeUsernameProblemLanguageResultExecution timeMemory
339160cheissmartTable Tennis (info1cup20_tabletennis)C++14
100 / 100
538 ms33264 KiB
#include <bits/stdc++.h>
#define IO_OP std::ios::sync_with_stdio(0); std::cin.tie(0);
#define F first
#define S second
#define V vector
#define PB push_back
#define MP make_pair
#define EB emplace_back
#define ALL(v) (v).begin(), (v).end()
#define debug(x) cerr << "Line(" << __LINE__ << ") -> " << #x << " is " << x << endl

using namespace std;

typedef long long ll;
typedef pair<int, int> pi;
typedef V<int> vi;

const int INF = 1e9 + 7;

signed main()
{
	IO_OP;

	int n, k;
	cin >> n >> k;
	vi a(n + k);
	for(int i = 0; i < n + k; i++) cin >> a[i];
	auto check = [&] (int sum) {
		vi ans;
		int l = 0, r = n + k - 1;
		while(l < r && ans.size() < n) {
			if(a[l] + a[r] == sum) {
				ans.PB(a[l]);
				ans.PB(a[r]);
				l++, r--;
			}
			else if(a[l] + a[r] < sum) l++;
			else r--;
		}
		sort(ALL(ans));
		if(ans.size() == n) {
			for(int i:ans) cout << i << " ";
			cout << endl;
			exit(0);
		}
	};
	if(n + k < 4 * k) {
		for(int left = 0; left <= k; left++) {
			for(int right = 0; right + left <= k; right++) {
				int l = left, r = n + k - right - 1;
				check(a[l] + a[r]);
			}
		}
	} else {
		unordered_map<int, int> cnt;
		for(int i = 0; i < 2 * k; i++)
			for(int j = 0; j < 2 * k; j++)
				cnt[a[i] + a[n + k - j - 1]]++;
		for(pi p:cnt)
			if(p.S >= k)
				check(p.F);
	}

}

Compilation message (stderr)

tabletennis.cpp: In lambda function:
tabletennis.cpp:31:29: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   31 |   while(l < r && ans.size() < n) {
      |                  ~~~~~~~~~~~^~~
tabletennis.cpp:41:17: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   41 |   if(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...