Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- using ll = long long;
- const int N = 1e5 + 5;
- vector<int> adj[N];
- #define bit(i, x) (((x) >> (i)) & 1)
- int p;
- struct T
- {
- int a[N];
- void Add(int x)
- {
- for (int i = 0; i < (1 << adj[x].size()); ++i)
- {
- int tmp(1);
- for (int j = 0; j < adj[x].size(); ++j)
- if (bit(j, i))
- tmp *= adj[x][j];
- ++a[tmp];
- }
- }
- int Get(int x)
- {
- int ans(0);
- for (int i = 0; i < (1 << adj[x].size()); ++i)
- {
- int tmp(1);
- for (int j = 0; j < adj[x].size(); ++j)
- if (bit(j, i))
- tmp *= adj[x][j];
- ans += a[tmp] * ((__builtin_popcount(i) & 1) ? -1 : 1);
- }
- return ans;
- }
- void Clear()
- {
- fill(a, a + p + 1, 0);
- }
- } f, g;
- int n;
- int a[N], b[N], c[N], d[N], ida[N], idb[N];
- void Read()
- {
- cin >> n;
- for (int i = 1; i <= n; ++i)
- cin >> a[i];
- for (int i = 1; i <= n; ++i)
- cin >> b[i];
- for (int i = 2; i <= n; ++i)
- if (adj[i].empty())
- for (int j = i; j <= n; j += i)
- adj[j].push_back(i);
- }
- bool Check(int a[N], int b[N], int ida[N], int idb[N], int v)
- {
- int j(1), t(1);
- f.Clear();
- g.Clear();
- for (int i = 1; i <= p; ++i)
- {
- while (j <= p && a[ida[j]] + v <= b[idb[i]])
- {
- f.Add(ida[j]);
- ++j;
- }
- while (t <= p && b[idb[t]] + v <= a[ida[i]])
- {
- g.Add(idb[t]);
- ++t;
- }
- if (f.Get(idb[i]) > 0 || g.Get(ida[i]) > 0)
- return true;
- }
- return false;
- }
- void Solve()
- {
- for (int i = 1; i <= n; ++i)
- {
- p = n / i;
- for (int j = p; j; --j)
- {
- c[j] = a[j * i];
- d[j] = b[j * i];
- ida[j] = idb[j] = j;
- }
- sort(ida + 1, ida + p + 1, [&](const int &x, const int &y) {
- return c[x] < c[y];
- });
- sort(idb + 1, idb + p + 1, [&](const int &x, const int &y) {
- return d[x] < d[y];
- });
- int l = 0, m, h = 1e9 - 1;
- while (l <= h)
- {
- m = (l + h) / 2;
- if (Check(c, d, ida, idb, m))
- l = m + 1;
- else
- h = m - 1;
- }
- cout << h << " ";
- }
- }
- int32_t main()
- {
- ios::sync_with_stdio(0);
- cin.tie(0);
- cout.tie(0);
- Read();
- Solve();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement