2585 auto ls = unordered_set<pair<int, int>, pair_hash>();
2586 auto row = unordered_map<int, int>();
2587 auto col = unordered_map<int, int>();
2588 auto diag_down = unordered_map<int, int>();
2589 auto diag_up = unordered_map<int, int>();
2590 for(
auto lamp: lamps) {
2593 auto p = make_pair(x, y);
2594 if(!ls.contains(p)) {
2598 diag_down[n - x + y]++;
2602 auto ans = vector<int>();
2603 for(
auto query: queries) {
2604 int query_x = query[0];
2605 int query_y = query[1];
2606 if(row[query_x] > 0 || col[query_y] > 0 || diag_down[n - query_x + query_y] > 0 || diag_up[query_x + query_y] > 0) {
2611 pair<int, int> adjacents[9] = {make_pair(query_x + 1, query_y + 1), make_pair(query_x + 1, query_y), make_pair(query_x + 1, query_y - 1),
2612 make_pair(query_x, query_y + 1), make_pair(query_x, query_y), make_pair(query_x, query_y - 1),
2613 make_pair(query_x - 1, query_y + 1), make_pair(query_x - 1, query_y), make_pair(query_x - 1, query_y - 1)};
2614 for(
auto adjacent: adjacents) {
2615 if(ls.contains(adjacent)) {
2617 auto [x, y] = adjacent;
2620 diag_down[n - x + y]--;