Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int query(int node, int p, int height) {
- //how to make sure doesn't TLE? if we have to check every range??
- if (node <= 0)
- return 0;
- int cnt = 0;
- for (eqpair p : seg[node]) {
- if (deleted.find(p) == deleted.end() && p.h <= height) {
- cnt++;
- deleted.insert(p);
- }
- // todo: make sure the set is sorted by height
- if (p.h > height)
- break;
- }
- set<eqpair>::iterator it;
- while (seg[node].size() > 0) {
- it = seg[node].begin();
- if ((*it).h <= height) {
- seg[node].erase(it);
- }
- else
- break;
- }
- return cnt + query(node/2, p, height);
- }
Advertisement
Add Comment
Please, Sign In to add comment