Go: package main

import (
        "fmt"
)

var paper [10][10]int

func main() {
        var x, y, s int
        for {
                _, err := fmt.Scanf("%d,%d,%d", &x, &y, &s)
                if err != nil {
                        break
                }

                fill(x, y, s)
        }
        var d, z int
        for i := 0; i < 10; i++ {
                for j := 0; j < 10; j++ {
                        if paper[i][j] == 0 {
                                z += 1
                        }
                        if paper[i][j] > d {
                                d += 1
                        }
                }
        }
        fmt.Printf("%d\n%d\n", z, d)
}

func fill(x int, y int, s int) {
        paper[x][y] += 1
        if x > 0 {
                paper[x-1][y] += 1
        }
        if x < 9 {
                paper[x+1][y] += 1
        }
        if y > 0 {
                paper[x][y-1] += 1
        }
        if y < 9 {
                paper[x][y+1] += 1
        }

        if s >= 2 {
                if x > 0 && y > 0 {
                        paper[x-1][y-1] += 1
                }
                if x > 0 && y < 9 {
                        paper[x-1][y+1] += 1
                }
                if x < 9 && y > 0 {
                        paper[x+1][y-1] += 1
                }
                if x < 9 && y < 9 {
                        paper[x+1][y+1] += 1
                }
        }

        if s > 2 {
                if x > 1 {
                        paper[x-2][y] += 1
                }
                if x < 8 {
                        paper[x+2][y] += 1
                }
                if y > 1 {
                        paper[x][y-2] += 1
                }
                if y < 8 {
                        paper[x][y+2] += 1
                }
        }
}

C++: #include <bits/stdc++.h>

using namespace std;

int main()
{
    int x, y, s;
    char c;
    vector<vector<int>> v(14, vector<int>(14, 0));
    while (cin >> x >> c >> y >> c >> s) {
        x += 2; y += 2;
        switch (s) {
            case 3:
                v[x][y-2]++; v[x][y+2]++;
                v[x-2][y]++; v[x+2][y]++;
            case 2:
                v[x-1][y-1]++; v[x-1][y+1]++;
                v[x+1][y-1]++; v[x+1][y+1]++;
            case 1:
                v[x+1][y]++; v[x-1][y]++;
                v[x][y-1]++; v[x][y+1]++;
                v[x][y]++;
                break;
        }
    }

    int mx = 0, cnt = 0;
    for (int i = 2; i < 12; i++) {
        for (int j = 2; j < 12; j++) {
            mx = max(mx, v[i][j]);
            if (v[i][j] == 0) cnt++;
        }
    }
    cout << cnt << "\n" << mx << endl;
    return 0;
}

C++: #include <stdio.h>

int main()
{
	int ans1 = 0;
	int ans2 = 0;
	int x,y,size;
	int paper[14][14];
	for(int i = 0; i < 14; i++){
		for(int j = 0; j < 14; j++){
			paper[i][j] = 0;
		}
	}
	while(scanf("%d,%d,%d",&x,&y,&size) != EOF){
		paper[x + 2][y + 2] ++;
		paper[x + 1][y + 2] ++;
		paper[x + 2][y + 1] ++;
		paper[x + 3][y + 2] ++;
		paper[x + 2][y + 3] ++;
		if(size > 1){
			paper[x + 1][y + 3] ++;
			paper[x + 1][y + 1] ++;
			paper[x + 3][y + 1] ++;
			paper[x + 3][y + 3] ++;
		}
		if(size > 2){
			paper[x + 2][y + 4] ++;
			paper[x + 2][y] ++;
			paper[x + 4][y + 2] ++;
			paper[x][y + 2] ++;
		}
	}
	for(int i = 2; i < 12; i++){
		for(int j = 2; j < 12; j++){
			if(paper[i][j] == 0){
				ans1++;
			}
			if(ans2 < paper[i][j]){
				ans2 = paper[i][j];
			}

		}
	}
	printf("%d\n%d\n",ans1,ans2);
	Sleep(2000);
	return 0;
}

C++: #include <fstream>
#include <iostream>
#include <cmath>
#include <vector>
#include <queue>
#include <utility>
#include <algorithm>
using namespace std;
// 5 9 13
int dx[13] = {0,1,0,-1,0,1,1,-1,-1,2,0,-2,0};
int dy[13] = {0,0,1,0,-1,1,-1,1,-1,0,2,0,-2};

bool inside(int x, int y) {
  return x >= 0 && x < 10 && y >= 0 && y < 10;
}

int main() {
  // ifstream cin("../test.txt");
  int p[10][10];
  for (int i = 0; i < 10; i++) {
    for (int j = 0; j < 10; j++) {
      p[i][j] = 0;
    }
  }
  int x,y,size;
  char g,h;
  while (cin >> x >> g >> y >> h >> size) {
    int m = size * 4 + 1;
    for (int i = 0; i < m; i++) {
      int nx = x + dx[i];
      int ny = y + dy[i];
      if (inside(nx, ny))
        p[nx][ny]++;
    }
  }

  int cnt = 0;
  int deepest = 0;
  for (int i = 0; i < 10; i++) {
    for (int j = 0; j < 10; j++) {
      if (!p[i][j]) cnt++;
      deepest = max(deepest, p[i][j]);
    }
  }

  cout << cnt << endl << deepest << endl;
}

C++: #include<iostream>
using namespace std;

int main() {
	int pap[10][10] = {};
	int x, y, s;
	int ca = 0;
	int p = 0;
	while (scanf("%d,%d,%d", &x, &y, &s)+1) {

		if (s == 1) {pap[x][y] += 1;}
			if (x + 1 < 10) { pap[x + 1][y] += 1; }
			if (x - 1 > -1) { pap[x - 1][y] += 1; }
			if (y + 1 < 10) { pap[x][y + 1] += 1; }
			if (y - 1 > -1) { pap[x][y - 1] += 1; }

			if (s == 2) {pap[x][y] += 1;}
			if (x + 1 < 10) { pap[x + 1][y] += 1; }
			if (x - 1 > -1) { pap[x - 1][y] += 1; }
			if (y + 1 < 10) { pap[x][y + 1] += 1; }
			if (y - 1 > -1) { pap[x][y - 1] += 1; }
			if (x + 1 < 10 && y - 1 > -1) { pap[x + 1][y - 1] += 1; }
			if (x + 1 < 10 && y + 1 < 10) { pap[x + 1][y + 1] += 1; }
			if (x - 1 > -1 && y + 1 < 10) { pap[x - 1][y + 1] += 1; }
			if (x - 1 > -1 && y - 1 > -1) { pap[x - 1][y - 1] += 1; }

			if (s == 3) {pap[x][y] += 1;}
			if (x + 1 < 10) { pap[x + 1][y] += 1; }
			if (x - 1 > -1) { pap[x - 1][y] += 1; }
			if (y + 1 < 10) { pap[x][y + 1] += 1; }
			if (y - 1 > -1) { pap[x][y - 1] += 1; }
			if (x + 1 < 10 && y - 1 > -1) { pap[x + 1][y - 1] += 1; }
			if (x + 1 < 10 && y + 1 < 10) { pap[x + 1][y + 1] += 1; }
			if (x - 1 > -1 && y + 1 < 10) { pap[x - 1][y + 1] += 1; }
			if (x - 1 > -1 && y - 1 > -1) { pap[x - 1][y - 1] += 1; }
			if (x + 2 < 10) { pap[x + 2][y] += 1; }
			if (x - 2 > -1) { pap[x - 2][y] += 1; }
			if (y + 2 < 10) { pap[x][y + 2] += 1; }
			if (y - 2 > -1) { pap[x][y - 2] += 1; }
		
			for (int i = 0; i < 10; i++) {
				for (int j = 0; j < 10; j++) {
					if (pap[i][j] == 0) { ca++; }
					if (p < pap[i][j]) { p = pap[i][j]; }
				}
			}
	}
	cout << ca << endl << p << endl;
	return 0;
}

C++: #include<iostream>
#include<cstdio>
using namespace std;
int main(){
  int field[30][30] = {0};
  int x,y,c;
  while(scanf("%d,%d,%d",&x,&y,&c)!=EOF){
    field[x+10][y+10]++;
    field[x+10][y+9]++;
    field[x+10][y+11]++;
    field[x+9][y+10]++;
    field[x+11][y+10]++;
    if(c>1){
      field[x+11][y+9]++;
      field[x+11][y+11]++;
      field[x+9][y+9]++;
      field[x+9][y+11]++;
    }
    if(c>2){
      field[x+8][y+10]++;
      field[x+12][y+10]++;
      field[x+10][y+8]++;
      field[x+10][y+12]++;
    }
  }
  int a = 0,b = 0;
  for(int i=0; i<10; i++){
    for(int j=0; j<10; j++){
      if(field[i+10][j+10] == 0) a++;
      if(field[i+10][j+10] > b) b = field[i+10][j+10];
    }
  }
  cout <<a<<endl<<b<<endl;
  return 0;
}

C++: #include <iostream>

using namespace std;
int Field[14][14];
int move_x[] = {-1, 0, 1,  0, -1,  1,  1, -1, -2, 0, 2,  0};
int move_y[] = { 0, 1, 0, -1,  1,  1, -1, -1,  0, 2, 0, -2};


void solve()
{
	int ax, ay, at;
	while(~scanf("%d%*c%d%*c%d", &ax, &ay, &at))
	{
		int size = at * 4;
		Field[ax + 2][ay + 2]++;
		for(int i = 0; i < size; ++i)
		{
			int X = ax + move_x[i] + 2;
			int Y = ay + move_y[i] + 2;
			Field[X][Y]++;
		}
	}
	int count = 0;
	int deepest = 0;
	for(int i = 2; i < 12; ++i)
	{
		for(int j = 2; j < 12; ++j)
		{
			if(Field[i][j] > 0)
			{
				if(deepest < Field[i][j])
				{
					deepest = Field[i][j];
				}
			}
			else
			{
				count++;
			}
		}
	}
	cout << count << endl << deepest << endl;
}

int main()
{
	solve();
	return(0);
}