#include #include #include using namespace std; using namespace __gnu_pbds; template using ordered_set = tree, rb_tree_tag, tree_order_statistics_node_update>; #define io ios::sync_with_stdio(false); cin.tie(0); #define int long long int #define ld long double #define vi vector #define pii pair #define pb push_back #define F first #define S second #define MP make_pair #define all(v) v.begin(), v.end() #define forn(a, n) for(int i = a ; i < n ; i++) #define yesno(b) cout << ((b)? "YES" : "NO") #define nl cout << "\n" #define print(v,a) for(auto _ : v) cout << _ << a; #define MOD 998244353ll #define MOD2 1000000007ll #define FL(i, a, n) for(int i = a ; i < n ; i++) #define FR(i, a, n) for(int i = a ; i >= n ; i--) const int inf = 1e17 + 1; void solve(){ int n, q; cin >> n; set st, tp; vector arr(n); forn(0, n) { cin >> arr[i].first >> arr[i].second; st.insert(arr[i].first); tp.insert(arr[i].second); } cin >> q; vector queries(q); forn(0, q) { cin >> queries[i].first >> queries[i].second; st.insert(queries[i].first); tp.insert(queries[i].second); } map mappingSt, mappingTp; int idSt = 1, idTp = 1; for(auto x : st) { mappingSt[x] = idSt++; } for(auto x : tp) { mappingTp[x] = idTp++; } vector> m(idTp + 1); forn(0, n) { arr[i].first = mappingSt[arr[i].first]; arr[i].second = mappingTp[arr[i].second]; m[arr[i].second].push_back(arr[i].first); } sort(all(arr)); function bs = [&](int s) -> int { int l = 0, r = n - 1, ans = -1, mid; while(l <= r) { mid = (l + r) / 2; if(arr[mid].first <= s) { ans = mid; l = mid + 1; } else { r = mid - 1; } } return ans + 1; }; function bs2 = [&](int type, int s) -> int { int l = 0, r = m[type].size() - 1, ans = -1, mid; while(l <= r) { mid = (l + r) / 2; if(m[type][mid] <= s) { ans = mid; l = mid + 1; } else { r = mid - 1; } } return ans + 1; }; for(auto [s, t] : queries) { s = mappingSt[s]; t = mappingTp[t]; int pick = bs(s), notPick = bs2(t, s); // cout << pick << " " << notPick << " "; cout << pick - notPick << endl; } } signed main(){ io; // freopen("input.txt", "r", stdin); // freopen("output.txt", "w", stdout); int t = 1; // cin >> t; // auto st = chrono::high_resolution_clock::now(); forn(1, t + 1){ // cout << "Case #" << i << ": "; solve(); } // cerr << "Time: " << (ld)(chrono::duration_cast(chrono::high_resolution_clock::now() - st).count()) / 1000.0 << "s"; return 0; }