Beispiel #1
0
    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);
    }
Beispiel #2
0
 public bool IntersectWith(SantaPatch sp)
 {
     return((sp.X2 >= X && sp.X <= X2) &&
            (sp.Y2 >= Y && sp.Y <= Y2));
 }