#pragma GCC target("pclmul", "sse2", "sse4.1") #include #include #include #include using namespace std; typedef long long ll; ll clmul(ll x, ll y) { __m128i x_ = _mm_set_epi64x(0, x); __m128i y_ = _mm_set_epi64x(0, y); __m128i z_ = _mm_clmulepi64_si128(x_, y_, 0); return _mm_extract_epi64(z_, 0); } vector subset_convolution(int n, vector a, vector b){ int s = n+1; int L = 1< pops(L); for (int i=0; i ta(s*L), tb(s*L); for (int i=0; i>i&1)) j |= 1< tc(s*L); int si, sit; for (int i=0; i>i&1)) j |= 1< c(L); for (int i=0; i> n; vector a(1< b(1<> x; a[i] |= x<> x; b[i] |= x<>i&1){ a[j^(1< c = subset_convolution(n, a, b); for (int i=0; i>i&1){ c[j^(1<>j&1); if (j==62) cout << "\n"; else cout << " "; } } }