class Solution {
public:
vector<vector<int>> imageSmoother(vector<vector<int>>& M) {
int r = M.size(), c = M[0].size();
vector<vector<int> > ans (r, vector<int>(c));
for(int i = 0; i < r; i++) {
for(int j = 0; j < c; j++) {
ans[i][j] = find(M, i, j);
}
}
return ans;
}
int find(vector<vector<int>>& M, int x, int y) {
int dx[9] = {0,0,1,1,1,0,-1,-1,-1};
int dy[9] ={0,-1,-1,0,1,1,1,0,-1};
int r = M.size(), c = M[0].size();
int sum = 0, n = 0;
for(int i = 0; i < 9; i++) {
int xi = x + dx[i];
int yi = y + dy[i];
if (xi >= 0 && xi < r && yi >= 0 && yi < c) {
sum += M[xi][yi];
n++;
}
}
return sum/n;
}
};