답안 #675159

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
675159 2022-12-27T02:16:50 Z TranGiaHuy1508 Table Tennis (info1cup20_tabletennis) C++17
100 / 100
1833 ms 39056 KB
#include <bits/stdc++.h>
using namespace std;
 
void main_program();
 
signed main(){
	ios_base::sync_with_stdio(0); cin.tie(0);
	main_program();
}
 
int n, k;
vector<int> v;
map<int, int> mp;
vector<int> s;
 
void main_program(){
	cin >> n >> k;
	v.resize(n + k); for (auto &i: v) cin >> i;
 
	// s.resize((n+k) * k * 2 + 100);
	int crr = 0;
 
	// for (int i = 0; i < n+k; i++){
	// 	// X = (n+k-1) - j
	// 	// i-k <= X <= i+k
	// 	// i-k <= (n+k-1) - j <= i+k
	// 	// j <= (n+k-1) + k - i
	// 	// j >= (n+k-1) - k - i
 
	// 	int lb = max(i+1, (n+k-1) - k - i), rb = min(n+k-1, (n+k-1) + k - i);
	// 	for (int j = lb; j <= rb; j++){
	// 		// cout << ":: " << i << " " << j << "\n";
	// 		mp[v[i] + v[j]]++;
	// 		// s[crr++] = v[i] + v[j];
	// 	}
	// }

	for (int i = 0; i < k*2; i++){
		for (int j = max(i+1, n - k); j < n+k; j++){
			mp[v[i] + v[j]]++;
		}
	}
 
	// s[crr++] = 2'000'000'010;
	sort(s.begin(), s.begin() + crr);

	set<int> tmp;
	for (auto i: v) tmp.insert(i);

	for (auto [key, value]: mp){
		if (value < min(k, n/2)) continue;
		
		vector<int> res;
		
		for (auto i: tmp){
			if (i >= key - i) break;
			if (tmp.count(key - i)) res.push_back(i);
			if ((int)res.size() >= n/2) break;
		}

		if ((int)res.size() < n/2) continue;

		for (int i = 0; i < n/2; i++) cout << res[i] << " ";
		for (int i = n/2 - 1; i >= 0; i--) cout << key - res[i] << " ";
		cout << "\n";
		return;
	}
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Correct 1 ms 408 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 8 ms 1620 KB Output is correct
2 Correct 85 ms 9864 KB Output is correct
3 Correct 65 ms 9792 KB Output is correct
4 Correct 61 ms 9796 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 72 ms 9748 KB Output is correct
2 Correct 63 ms 9852 KB Output is correct
3 Correct 75 ms 9772 KB Output is correct
4 Correct 61 ms 9736 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 724 KB Output is correct
2 Correct 3 ms 980 KB Output is correct
3 Correct 3 ms 1000 KB Output is correct
4 Correct 3 ms 980 KB Output is correct
5 Correct 3 ms 980 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 2 ms 468 KB Output is correct
3 Correct 2 ms 468 KB Output is correct
4 Correct 1 ms 468 KB Output is correct
5 Correct 2 ms 468 KB Output is correct
6 Correct 1 ms 340 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 64 ms 9900 KB Output is correct
3 Correct 89 ms 9856 KB Output is correct
4 Correct 149 ms 9888 KB Output is correct
5 Correct 157 ms 9760 KB Output is correct
6 Correct 96 ms 10248 KB Output is correct
7 Correct 149 ms 9784 KB Output is correct
8 Correct 169 ms 9836 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 22 ms 4564 KB Output is correct
2 Correct 306 ms 37460 KB Output is correct
3 Correct 268 ms 39056 KB Output is correct
4 Correct 212 ms 35080 KB Output is correct
5 Correct 1833 ms 16688 KB Output is correct
6 Correct 124 ms 10496 KB Output is correct
7 Correct 187 ms 31736 KB Output is correct
8 Correct 191 ms 34048 KB Output is correct