3
int surfaceArea(vector<vector<int>> &grid) {6
for (int i = 0; i < grid.size(); i++) {7
for (int j = 0; j < grid[0].size(); j++) {9
area += grid[i][j] * 4;11
// adding two because of there will only one top and one bottom if cube12
// is placed upon each other13
if (grid[i][j] != 0) area += 2;15
// subtracting adjacent side area if any16
if (i - 1 >= 0) area -= min(grid[i - 1][j], grid[i][j]);17
if (i + 1 < grid.size()) area -= min(grid[i + 1][j], grid[i][j]);18
if (j - 1 >= 0) area -= min(grid[i][j - 1], grid[i][j]);19
if (j + 1 < grid.size()) area -= min(grid[i][j + 1], grid[i][j]);