Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <assert.h>
- #include <bits/stdc++.h>
- using namespace std;
- using ll = long long;
- using pii = pair<int, int>;
- int t, n, q;
- vector<int> rs[1 << 10];
- vector<ll> acc[1 << 10];
- int main(int argc, char **argv)
- {
- scanf("%d", &t);
- while (t--) {
- scanf("%d%d", &n, &q);
- int h, w;
- for (int i = 1; i <= 1000; ++i)
- rs[i].clear(), acc[i].clear();
- for (int i = 0; i < n; ++i)
- scanf("%d%d", &h, &w), rs[h].push_back(w);
- for (int i = 1; i <= 1000; ++i) {
- sort(rs[i].begin(), rs[i].end());
- int rn = rs[i].size();
- acc[i] = vector<ll>(rn + 1);
- for (int j = 0; j < rn; ++j) {
- acc[i][j + 1] = acc[i][j] + ll(i) * rs[i][j];
- }
- }
- for (int i = 0; i < q; ++i) {
- int hs, ws, hb, wb;
- scanf("%d%d%d%d", &hs, &ws, &hb, &wb);
- ll total = 0;
- for (int j = hs + 1; j < hb; ++j) {
- int lb = upper_bound(rs[j].begin(), rs[j].end(), ll(ws)) - rs[j].begin();
- int ub = lower_bound(rs[j].begin(), rs[j].end(), ll(wb)) - rs[j].begin();
- if (ub < lb) {
- continue;
- }
- total += acc[j][ub] - acc[j][lb];
- }
- printf("%lld\n", total);
- }
- }
- return 0;
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement