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 <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <sstream>
#include <climits>
using namespace std;

#define Vint vector<int>
#define VVint vector<Vint>
#define Fsize() front().size()

int VVint_zero(VVint vv) {
	int num = 0;
	for (int i = 0; i < vv.size(); i++) {
		for (int j = 0; j < vv.Fsize(); j++) {
			if (vv[i][j] == 0) num++;
		}
	}
	return num;
}

int VVint_max(VVint vv) {
	int max = INT_MIN;
	for (int i = 0; i < vv.size(); i++) {
		for (int j = 0; j < vv.Fsize(); j++) {
			if (vv[i][j] > max) max = vv[i][j];
		}
	}
	return max;
}

int main() {
	int x, y, s;
	string str, str_x, str_y, str_s;
	VVint vec(10, Vint(10, 0));
	while (getline(cin, str)) {
		replace(str.begin(), str.end(), ',', ' ');
		istringstream iss(str);
		iss >> str_x >> str_y >> str_s;
		x = stoi(str_x);
		y = stoi(str_y);
		s = stoi(str_s);
		vec[y][x] += 1;
		if (s == 1 || s == 2 || s == 3) {
			if (y - 1 >= 0) vec[y - 1][x] += 1;
			if (y + 1 >= 0) vec[y + 1][x] += 1;
			if (x - 1 >= 0) vec[y][x - 1] += 1;
			if (x + 1 >= 0) vec[y][x + 1] += 1;
		}
		if (s == 2 || s == 3) {
			if (y - 1 >= 0 && x - 1 >= 0) vec[y - 1][x - 1] += 1;
			if (y - 1 >= 0 && x + 1 >= 0) vec[y - 1][x + 1] += 1;
			if (y + 1 >= 0 && x - 1 >= 0) vec[y + 1][x - 1] += 1;
			if (y + 1 >= 0 && x + 1 >= 0) vec[y + 1][x + 1] += 1;
		}
		if (s == 3) {
			if (y - 2 >= 0) vec[y - 2][x] += 1;
			if (y + 2 >= 0) vec[y + 2][x] += 1;
			if (x - 2 >= 0) vec[y][x - 2] += 1;
			if (x + 2 >= 0) vec[y][x + 2] += 1;
		}
	}
	cout << VVint_zero(vec) << endl;
	cout << VVint_max(vec) << endl;
	return 0;
}

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

int p[14][14];

int main()
{
  int x, y, s;

  while (scanf("%d,%d,%d", &x, &y, &s) != EOF){
    p[x + 2][y + 1] += 1;
    p[x + 1][y + 2] += 1;
    p[x + 2][y + 2] += 1;
    p[x + 3][y + 2] += 1;
    p[x + 2][y + 3] += 1;

    if (s >= 2){
      p[x + 1][y + 1] += 1;
      p[x + 3][y + 1] += 1;
      p[x + 1][y + 3] += 1;
      p[x + 3][y + 3] += 1;
    }

    if (s == 3){
      p[x][y + 2] += 1;
      p[x + 2][y] += 1;
      p[x + 4][y + 2] += 1;
      p[x + 2][y + 4] += 1;
    }
  }

  int cnt, max;

  cnt = max = 0;

  for (int i = 2; i < 12; i++){
    for (int j = 2; j < 12; j++){
      if (p[i][j] == 0){
        cnt++;
      }
      if (max < p[i][j]){
        max = p[i][j];
      }
    }
  }
  cout << cnt << endl << max << endl;
}

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

using namespace std;
using ll = long long;
using pii = pair<int, int>;

vector<vector<pii>> drop = {
  {{-1, 0}, {0, -1}, {0, 0}, {0, 1}, {1, 0}},
  {{-1, -1}, {-1, 0}, {-1, 1}, {0, -1}, {0, 0}, {0, 1}, {1, -1}, {1, 0}, {1, 1}},
  {{-2, 0}, {-1, -1}, {-1, 0}, {-1, 1}, {0, -2}, {0, -1}, {0, 0}, {0, 1}, {0, 2}, {1, -1}, {1, 0}, {1, 1}, {2, 0}}
};

int main() {
  cin.tie(0);
  ios_base::sync_with_stdio(false);
  cout << fixed << setprecision(10);
  
  int x, y, s;
  char c;
  int a[10][10] = {};
  while (cin >> x >> c >> y >> c >> s) {
    s--;
    for (auto i : drop[s]) {
      int ny = y + i.first, nx = x + i.second;
      if (ny >= 0 && ny < 10 && nx >= 0 && nx < 10) a[ny][nx]++;
    }
  }
  int sum = 0;
  for (int i = 0; i < 10; i++) {
    for (int j = 0; j < 10; j++) sum += a[i][j] == 0;
  }
  cout << sum << endl;
  cout << *max_element((int*)a, (int*)(a + 10)) << endl;

  return 0;
}

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

int pa[20][20];

int main(void)
{
	int x,y,c;

	while(scanf("%d,%d,%d", &x,&y,&c) != EOF){
		x += 5;
		y += 5;

		if(c == 1){
			for(int i = -1; i <= 1; i++){
				pa[y][x-i]++;
				pa[y-i][x]++;

			}
			pa[y][x]--;
		}
		else if(c == 2){
			for(int i = -1; i <= 1; i++){
				for(int j = -1; j <= 1; j++)
					pa[y-i][x-j]++;
			}
		}
		else if(c == 3){
			for(int i = -1; i <= 1; i++){
				for(int j = -1; j <= 1; j++)
					pa[y-i][x-j]++;
			}
			pa[y][x+2]++;
			pa[y+2][x]++;
			pa[y][x-2]++;
			pa[y-2][x]++;
		}	
	}

	int count = 0, max = 0;

	for(int i = 5; i <= 15; i++){
		for(int j = 5; j <= 15; j++){
			if(pa[i][j] > 0)
				count++;
			if(max < pa[i][j])
				max = pa[i][j];


		}

	}
	count = 100 - count;
	cout << count << endl << max << endl;


	return 0;
}

C++: #include <stdio.h>
  int xy[10][10]={};
  int main(){
	  int x,y,s,i,j,num=0;
	  while(scanf("%d,%d,%d",&x,&y,&s) != EOF){
		  if(s==1){
			  xy[x][y]++;
			  xy[x-1][y]++;
			  xy[x+1][y]++;
			  xy[x][y-1]++;
			  xy[x][y+1]++;
		  }else if(s==2){
			  xy[x-1][y-1]++;
			  xy[x-1][y]++;
			  xy[x-1][y+1]++;
			  xy[x][y-1]++;
			  xy[x][y]++;
			  xy[x][y+1]++;
			  xy[x+1][y-1]++;
			  xy[x+1][y]++;
			  xy[x+1][y+1]++;
		  }else if(s==3){
			  xy[x-2][y]++;
			  xy[x-1][y-1]++;
			  xy[x-1][y]++;
			  xy[x-1][y+1]++;
			  xy[x][y-2]++;
			  xy[x][y-1]++;
			  xy[x][y]++;
			  xy[x][y+1]++;
			  xy[x][y+2]++;
			  xy[x+1][y-1]++;
			  xy[x+1][y]++;
			  xy[x+1][y+1]++;
			  xy[x+2][y]++;
		  }
	  }
	  int max=xy[0][0];
	  for(i=0;i<10;i++){
		  for(j=0;j<10;j++){
			  if(xy[i][j]==0) num++;
			  if(xy[i][j]>max) max=xy[i][j];
		  }
	  }
	  printf("%d\n%d\n",num,max);
	  return 0;
  }

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

int dx[] = { 0, 1, 0, -1, 0, 1, 1, -1, -1, 2, 0, -2, 0 };
int dy[] = { 0, 0, 1, 0, -1, -1, 1, 1, -1, 0, 2, 0, -2 };

int main()
{
	int map[10][10];
	memset(map, 0, sizeof(map));
	int x, y, d;
	char c;

	while (cin >> x >> c >> y >> c >> d)
	{
		for (int i=0; i<=4*d; i++)
		{
			int tx = x + dx[i];
			int ty = y + dy[i];
			if (0 <= tx && tx < 10 && 0 <= ty && ty <= 10)
				map[ty][tx]++;
		}
	}

	int cnt = 0;
	int MAX = 0;
	for (int i=0; i<10; i++)
	for (int k=0; k<10; k++)
		if (map[i][k] == 0)
			cnt++;
		else if (map[i][k] > MAX)
			MAX = map[i][k];

	cout << cnt << endl;
	cout << MAX << endl;
}