Submission #481563

# Submission time Handle Problem Language Result Execution time Memory
481563 2021-10-21T07:16:16 Z rk42745417 Table Tennis (info1cup20_tabletennis) C++17
100 / 100
222 ms 28076 KB
// 100/100
#include <bits/stdc++.h>
using namespace std;

#define EmiliaMyWife ios::sync_with_stdio(0); cin.tie(0);
using ll = int64_t;
using uint = uint32_t;
using ull = uint64_t;
using ld = long double;
const int INF = 0x3f3f3f3f;
const int MOD = 1e9 + 7;
const double EPS = 1e-8;
const ll LINF = ll(1e18) + ll(1e15);
static auto LamyIsCute = []() {
	EmiliaMyWife
	return 48763;
}();

signed main() {
	int n, k;
	cin >> n >> k;
	vector<int> arr(n + k);
	for(int &x : arr)
		cin >> x;
	const int m = n + k;
	vector<int> ans;
	ans.reserve(n);
	auto run = [&](int s) {
		int rest = k, l = 0, r = m - 1;
		while(rest >= 0 && ans.size() < n) {
			if(arr[l] + arr[r] == s) {
				ans.push_back(arr[l]);
				ans.push_back(arr[r]);
				l++;
				r--;
			}
			else if(arr[l] + arr[r] > s)
				rest--, r--;
			else
				rest--, l++;
		}
	};
	if(m <= 4 * k) {
		for(int i = 0; i <= k; i++) {
			for(int j = 0; j + i <= k; j++) {
				run(arr[i] + arr[m - j - 1]);
				if(ans.size() == n) {
					sort(ans.begin(), ans.end());
					for(int a : ans)
						cout << a << ' ';
					cout << '\n';
					return 0;
				}
				ans.clear();
			}
		}
	}
	else {
		unordered_map<int, int> cnt;
		for(int i = 0; i < 2 * k; i++)
			for(int j = 0; j < 2 * k; j++)
				cnt[arr[i] + arr[m - j - 1]]++;
		for(const auto &[s, c] : cnt) {
			if(c >= k) {
				run(s);
				if(ans.size() == n) {
					sort(ans.begin(), ans.end());
					for(int a : ans)
						cout << a << ' ';
					cout << '\n';
					return 0;
				}
				ans.clear();
			}
		}
	}
}

Compilation message

tabletennis.cpp: In lambda function:
tabletennis.cpp:30:33: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   30 |   while(rest >= 0 && ans.size() < n) {
      |                      ~~~~~~~~~~~^~~
tabletennis.cpp: In function 'int main()':
tabletennis.cpp:47:19: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   47 |     if(ans.size() == n) {
      |        ~~~~~~~~~~~^~~~
tabletennis.cpp:66:19: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   66 |     if(ans.size() == n) {
      |        ~~~~~~~~~~~^~~~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4 ms 588 KB Output is correct
2 Correct 28 ms 2864 KB Output is correct
3 Correct 28 ms 2984 KB Output is correct
4 Correct 28 ms 2884 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 29 ms 2952 KB Output is correct
2 Correct 28 ms 2908 KB Output is correct
3 Correct 28 ms 2948 KB Output is correct
4 Correct 29 ms 2912 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Correct 0 ms 204 KB Output is correct
4 Correct 1 ms 204 KB Output is correct
5 Correct 0 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 0 ms 204 KB Output is correct
3 Correct 0 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
4 Correct 1 ms 332 KB Output is correct
5 Correct 1 ms 332 KB Output is correct
6 Correct 1 ms 332 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 28 ms 2936 KB Output is correct
3 Correct 31 ms 2944 KB Output is correct
4 Correct 30 ms 2888 KB Output is correct
5 Correct 27 ms 2932 KB Output is correct
6 Correct 28 ms 2880 KB Output is correct
7 Correct 28 ms 2936 KB Output is correct
8 Correct 27 ms 2884 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 219 ms 26856 KB Output is correct
3 Correct 222 ms 28076 KB Output is correct
4 Correct 184 ms 25352 KB Output is correct
5 Correct 72 ms 8916 KB Output is correct
6 Correct 38 ms 3268 KB Output is correct
7 Correct 153 ms 23104 KB Output is correct
8 Correct 184 ms 24756 KB Output is correct