#include <bits/stdc++.h>
using namespace std;
#define debug(args...) kout("[ " + string(#args) + " ]", args)
void kout() { cerr << endl; }
template <class T, class ...U> void kout(T a, U ...b) { cerr << a << ' ',kout(b...); }
template <class T> void pary(T L, T R) { while (L != R) cerr << *L << " \n"[++L==R]; }
const int MAXN = 150000;
const int MAXK = 400;
const int B = 1000;
int N, K;
int a[MAXN+MAXK+1];
bool flag[MAXN+MAXK+1];
unordered_map <int,int> arr;
bool check(int S) {
int nowR = N+K, cnt = 0;
for (int i = 1; i <= N+K; i++) flag[i] = false;
for (int i = 1; i < nowR; i++) {
while (a[i] + a[nowR] > S && nowR > i)
nowR--;
if (nowR > i && a[i] + a[nowR] == S) {
flag[i] = flag[nowR] = true;
cnt++;
nowR--;
}
if (cnt == N / 2) break;
}
return cnt == N / 2;
}
void solve() {
for (int i = 1; i <= B+1; i++) {
for (int j = N+K-B; j <= N+K; j++) {
if (i < j) arr[a[i] + a[j]]++;
}
}
for (auto [v, c] : arr) {
if (c >= 400 && check(v)) {
return;
}
}
}
void naive() {
for (int L = 1; L <= K+1; L++) {
for (int R = N; R <= N+K; R++) {
if (R-L+1 < N) continue;
fill(flag+1, flag+1+N+K, false);
int S = a[L] + a[R], cnt = 1;
flag[L] = flag[R] = true;
int nowR = R-1;
for (int i = L+1; i < nowR; i++) {
while (a[i] + a[nowR] > S && nowR > i)
nowR--;
if (a[i] + a[nowR] == S) {
flag[i] = flag[nowR] = true;
cnt++;
nowR--;
}
}
if (cnt == N / 2) return;
}
}
}
signed main() {
ios_base::sync_with_stdio(0), cin.tie(0);
cin >> N >> K;
for (int i = 1; i <= N+K; i++) {
cin >> a[i];
}
if (N+K <= B) {
naive();
} else {
solve();
}
for (int i = 1; i <= N+K; i++) {
if (flag[i]) cout << a[i] << ' ';
}
cout << '\n';
return 0;
}
Compilation message
tabletennis.cpp: In function 'void solve()':
tabletennis.cpp:38:12: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
38 | for (auto [v, c] : arr) {
| ^
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
211 ms |
20272 KB |
Output is correct |
2 |
Correct |
19 ms |
448 KB |
Output is correct |
3 |
Correct |
395 ms |
30812 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
39 ms |
648 KB |
Output is correct |
2 |
Correct |
563 ms |
39316 KB |
Output is correct |
3 |
Correct |
575 ms |
39404 KB |
Output is correct |
4 |
Correct |
611 ms |
39292 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
191 ms |
2652 KB |
Output is correct |
2 |
Correct |
422 ms |
35076 KB |
Output is correct |
3 |
Correct |
258 ms |
2628 KB |
Output is correct |
4 |
Correct |
438 ms |
33672 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
204 KB |
Output is correct |
2 |
Correct |
2 ms |
204 KB |
Output is correct |
3 |
Correct |
1 ms |
204 KB |
Output is correct |
4 |
Correct |
2 ms |
204 KB |
Output is correct |
5 |
Correct |
0 ms |
332 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
204 KB |
Output is correct |
2 |
Correct |
0 ms |
204 KB |
Output is correct |
3 |
Correct |
1 ms |
256 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
332 KB |
Output is correct |
2 |
Correct |
22 ms |
1228 KB |
Output is correct |
3 |
Correct |
552 ms |
37244 KB |
Output is correct |
4 |
Correct |
383 ms |
30852 KB |
Output is correct |
5 |
Correct |
28 ms |
1300 KB |
Output is correct |
6 |
Correct |
24 ms |
732 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
204 KB |
Output is correct |
2 |
Correct |
554 ms |
39276 KB |
Output is correct |
3 |
Correct |
477 ms |
34348 KB |
Output is correct |
4 |
Correct |
210 ms |
3396 KB |
Output is correct |
5 |
Correct |
391 ms |
33032 KB |
Output is correct |
6 |
Correct |
196 ms |
2852 KB |
Output is correct |
7 |
Correct |
79 ms |
3288 KB |
Output is correct |
8 |
Correct |
55 ms |
3340 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
204 KB |
Output is correct |
2 |
Correct |
617 ms |
39024 KB |
Output is correct |
3 |
Correct |
627 ms |
40876 KB |
Output is correct |
4 |
Correct |
482 ms |
37940 KB |
Output is correct |
5 |
Correct |
272 ms |
10248 KB |
Output is correct |
6 |
Correct |
94 ms |
2820 KB |
Output is correct |
7 |
Correct |
465 ms |
35012 KB |
Output is correct |
8 |
Correct |
454 ms |
36420 KB |
Output is correct |