#include #define be(v) (v).begin(),(v).end() #define pb(q) push_back(q) #define rep(i, n) for(int i=0;i> n; vector a(n), x(n); rep(i, n) cin >> x[i]; rep(i, n) cin >> a[i]; vector dist(n, -1); vector> v; map mp; set s; rep(i, n) { v.push_back({a[i] + x[i], i}); mp[x[i]] = i; s.insert(x[i]); } sort(be(v)); reverse(be(v)); vector seen(n, 0); vector> G(n); auto f = [&](auto&& f, ll i, ll d) -> void{ // cout << i << " " << d << " " << x[i] << " " << a[i] << endl; chmax(dist[i], d); all(to, G[i]) { if(seen[to]) continue; seen[to] = 1; f(f, to, d); } return ; }; rep(i, n) { if(s.count(x[i] - a[i])) { G[mp[x[i] - a[i]]].pb(i); } if(s.count(x[i] + a[i])) { G[mp[x[i] + a[i]]].pb(i); } } for(auto [e, i] : v) { if(seen[i]) continue; seen[i] = 1; f(f, i, e); } rep(i, n) { cout << dist[i] - x[i] << endl; } return 0; }