#include <iostream> #include <math.h> int T, AL, BL; int R[2048 * 1024 + 12]; bool try_simple() { int L = AL + BL - 1; int MIN = std::min(AL, BL), MAX = std::max(AL, BL); int ONES = 1 + MIN / 2; int pos = 0; for(int i = 0; i < ONES - 2; i ++) { R[pos++] = 1; R[pos++] = 0; R[pos++] = 0; R[pos++] = 0; } if (ONES > 1) { if (MIN % 2 == 0 && MAX == MIN) { R[pos++] = 1; R[pos++] = 0; } else if (MIN % 2 == 0) { R[pos++] = 1; R[pos++] = 0; R[pos++] = 0; } else { R[pos++] = 1; R[pos++] = 0; R[pos++] = 0; R[pos++] = 0; } } R[pos++] = 1; while (pos < L) R[pos++] = 0; std::cout << L << " "; for (int i = L - 1; i >= 0; i --) std::cout << R[i] << " "; std::cout << std::endl; } int main() { std::ios::sync_with_stdio(false); std::cin >> T; for (int t = 0; t < T; t++) { int bin; std::cin >> AL; for(int i = 0; i < AL; i ++) std::cin >> bin; std::cin >> BL; for(int i = 0; i < BL; i ++) std::cin >> bin; try_simple(); } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | #include <iostream> #include <math.h> int T, AL, BL; int R[2048 * 1024 + 12]; bool try_simple() { int L = AL + BL - 1; int MIN = std::min(AL, BL), MAX = std::max(AL, BL); int ONES = 1 + MIN / 2; int pos = 0; for(int i = 0; i < ONES - 2; i ++) { R[pos++] = 1; R[pos++] = 0; R[pos++] = 0; R[pos++] = 0; } if (ONES > 1) { if (MIN % 2 == 0 && MAX == MIN) { R[pos++] = 1; R[pos++] = 0; } else if (MIN % 2 == 0) { R[pos++] = 1; R[pos++] = 0; R[pos++] = 0; } else { R[pos++] = 1; R[pos++] = 0; R[pos++] = 0; R[pos++] = 0; } } R[pos++] = 1; while (pos < L) R[pos++] = 0; std::cout << L << " "; for (int i = L - 1; i >= 0; i --) std::cout << R[i] << " "; std::cout << std::endl; } int main() { std::ios::sync_with_stdio(false); std::cin >> T; for (int t = 0; t < T; t++) { int bin; std::cin >> AL; for(int i = 0; i < AL; i ++) std::cin >> bin; std::cin >> BL; for(int i = 0; i < BL; i ++) std::cin >> bin; try_simple(); } } |