// compile: make data
// run: ./data < data.in
#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
#ifdef LOCAL
#include <debug/codeforces.h>
#define debug(x...) _debug_print(#x, x);
#define Debug(x...) _debug_print_format(#x, x);
std::ifstream terminal("/dev/tty");
#define PP cerr<<"\033[1;30mpause...\e[0m",terminal.ignore();
#else
#define debug(x...)
#define Debug(x...)
#define PP
#endif
template<typename...Args> void print_(Args...args){((cout<<args<<" "),...)<<endl;}
#define rep(i,a,b) for(int i=(a);i<(int)(b);++i)
#define sz(v) ((int)(v).size())
#define print(...) print_(__VA_ARGS__);
#define FIND(a, x) ((find(a.begin(),a.end(),(x))!=a.end())?1:0)
#define cmin(x,...) x=min({(x),__VA_ARGS__})
#define cmax(x,...) x=max({(x),__VA_ARGS__})
#define INTMAX (int)(9223372036854775807)
#define INF (int)(1152921504606846976)
#define NaN (int)(0x8b88e1d0595d51d1)
#define double long double
#define int long long
#define uint unsigned long long
#define MAXN 200010
namespace math {
template <typename T> vector<T> fft(vector<T> const& a, vector<T> const& b) {
function<void(vector<complex<double>>&)> bitrev = [](vector<complex<double>> &f) {
int n = f.size();
int i = 0;
for (int j = 1; j < n-1; ++j) {
for (int k = n>>1; k > (i ^= k); k >>= 1);
if (j < i) swap(f[i], f[j]);
}
};
function<void(vector<complex<double>>&, bool)> solve = [&bitrev](vector<complex<double>> &f, bool inv) -> void {
int n = f.size();
bitrev(f);
for (int len = 2; len <= n; len <<= 1) {
double ang = 2 * M_PI / len * (inv ? -1 : 1);
complex<double> wlen(cos(ang), sin(ang));
for (int i = 0; i < n; i += len) {
complex<double> w(1);
for (int j = 0; j < len / 2; j++) {
complex<double> u = f[i+j], v = f[i+j+len/2] * w;
f[i+j] = u + v;
f[i+j+len/2] = u - v;
w *= wlen;
}
}
}
if (inv) for (complex<double> &x: f) x /= n;
};
vector<complex<double>> fa(a.begin(), a.end()), fb(b.begin(), b.end());
int n = 1;
while (n < (int)(a.size() + b.size())) n <<= 1;
fa.resize(n), fb.resize(n);
solve(fa, 0), solve(fb, 0);
for (int i = 0; i < n; i++) fa[i] *= fb[i];
solve(fa, 1);
vector<int> res(n);
for (int i = 0; i < n; i++) res[i] = round(fa[i].real());
return res;
}
}
int32_t main() {
ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
int k, n, m; cin >> k >> n >> m;
vector<int> a(k+1), b(k+1);
rep(i, 0, n) {
int x; cin >> x;
++a[x];
}
rep(i, 0, m) {
int x; cin >> x;
++b[x];
}
auto res = math::fft(a, b);
rep(i, 2, 2*k+1) cout << res[i] << " \n"[i==2*k];
return 0;
}
Heard good things about 6zbetbr, especially for its mobile platform. Easy to use and lots of options. Give it a shot at 6zbetbr.
Thomo fans, gà chọi c1 thomo seems to be the spot. Just passing it along, alright?
Gonna check out king88winvip. Hope its gonna live up to its name and be a king among online spots. Visit it now: king88winvip