1
use std::collections::hash_map::{Entry, OccupiedEntry};2
use std::collections::{HashMap, HashSet};5
pub fn grid_illumination(n: i32, lamps: Vec<Vec<i32>>, queries: Vec<Vec<i32>>) -> Vec<i32> {6
let (mut rows, mut cols, mut digL, mut digR, mut lamps) = lamps.iter().fold(14
|(mut rows, mut cols, mut digL, mut digR, mut lamps), l| {15
if lamps.insert((l[0], l[1])) {16
*rows.entry(l[0]).or_default() += 1;17
*cols.entry(l[1]).or_default() += 1;18
*digL.entry(l[0] - l[1]).or_default() += 1;19
*digR.entry(l[0] + l[1]).or_default() += 1;21
(rows, cols, digL, digR, lamps)28
if !rows.contains_key(&q[0])29
&& !cols.contains_key(&q[1])30
&& !digL.contains_key(&(q[0] - q[1]))31
&& !digR.contains_key(&(q[0] + q[1]))35
for i in (q[0] - 1).max(0)..=(q[0] + 1).min(n - 1) {36
for j in ((q[1] - 1).max(0)..=(q[1] + 1).min(n - 1)).filter(|&j| lamps.remove(&(i, j))) {49
let arr = [ro, co, dl, dr];51
let mut v = e.get_mut();