Submission #481562

# Submission time Handle Problem Language Result Execution time Memory
481562 2021-10-21T07:15:29 Z rk42745417 Table Tennis (info1cup20_tabletennis) C++17
100 / 100
343 ms 33660 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 {
		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 844 KB Output is correct
2 Correct 31 ms 4380 KB Output is correct
3 Correct 36 ms 4356 KB Output is correct
4 Correct 31 ms 4400 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 39 ms 4348 KB Output is correct
2 Correct 30 ms 4364 KB Output is correct
3 Correct 31 ms 4436 KB Output is correct
4 Correct 31 ms 4512 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 1 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 316 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 316 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
3 Correct 1 ms 340 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 32 ms 4444 KB Output is correct
3 Correct 32 ms 4360 KB Output is correct
4 Correct 32 ms 4340 KB Output is correct
5 Correct 31 ms 4352 KB Output is correct
6 Correct 32 ms 4420 KB Output is correct
7 Correct 32 ms 4348 KB Output is correct
8 Correct 41 ms 4400 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 204 KB Output is correct
2 Correct 343 ms 31948 KB Output is correct
3 Correct 323 ms 33660 KB Output is correct
4 Correct 208 ms 29556 KB Output is correct
5 Correct 85 ms 11220 KB Output is correct
6 Correct 57 ms 4732 KB Output is correct
7 Correct 167 ms 26368 KB Output is correct
8 Correct 167 ms 28608 KB Output is correct