public int Solve() { int maxX = GetMaxX(), maxY = GetMaxY(); int doublePatches = 0; int[,] patch = new int[maxX, maxY]; foreach (int patchId in inputValues.Keys) { SantaPatch currentPatch = inputValues[patchId]; for (int i = currentPatch.X; i < currentPatch.X + currentPatch.W; i++) { for (int j = currentPatch.Y; j < currentPatch.Y + currentPatch.H; j++) { patch[i, j] = patch[i, j] > 1 ? patch[i, j] : patch[i, j] + 1; } } } for (int i = 0; i < maxX; i++) { for (int j = 0; j < maxY; j++) { doublePatches += patch[i, j] == 2 ? 1 : 0; } } return(doublePatches); }
public bool IntersectWith(SantaPatch sp) { return((sp.X2 >= X && sp.X <= X2) && (sp.Y2 >= Y && sp.Y <= Y2)); }