#include #include #include #include #include using namespace std; typedef long long LL; const int N = 30010; struct House { int x, l, r; }; LL ans; House h[N]; int n, a[N]; set s[N]; map mm; int main() { freopen("candy.in", "r", stdin); freopen("candy.out", "w", stdout); scanf("%d", &n); for (int i = 1; i <= n; ++i) { scanf("%d", &a[i]); h[i].x = a[i]; mm[a[i]] = i; } for (int i = 1; i <= n; ++i) { scanf("%d%d", &h[i].l, &h[i].r); h[i].l = h[i].x - h[i].l, h[i].r = h[i].x + h[i].r; } sort(a + 1, a + n + 1); for (int i = 1; i <= n; ++i) { for (int j = lower_bound(a + 1, a + n + 1, h[i].l) - a; j <= upper_bound(a + 1, a + n + 1, h[i].r) - a - 1; ++j) { if (i == j) continue; s[mm[a[j]]].insert(i); } } for (int i = 1; i <= n; ++i) { for (auto e : s[i]) { if (s[e].count(i)) ++ans; } } printf("%lld\n", ans / 2); return 0; }