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 <string>
#include <vector>
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <functional>
#include <numeric>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <utility>
#include <sstream>
#include <complex>

using namespace std;

#define FOR(i,a,b) for(long long i=(a);i<(b);i++)
#define REP(i,N) for(long long i=0;i<(N);i++)
#define ALL(s) (s).begin(),(s).end()
#define fi first
#define se second

#define PI acos(-1.0)
#define INF 1000000007

typedef long long ll;
typedef pair<ll, ll> P;
typedef pair<double, double> PD;
typedef pair<string, ll> PS;
typedef vector<ll> V;

int d[100][100];
int dx[] = { 1, 0, -1, 0 };
int dy[] = { 0, 1, 0, -1 };
int x, y, size;

int main(){
	while (scanf("%d,%d,%d", &x, &y, &size)!=EOF){
		if (size == 1){
			d[x][y]++;
			for (int i = 0; i < 4; i++){
				int nx = x + dx[i];
				int ny = y + dy[i];
				if (nx >= 0 && ny >= 0 && nx < 10 && ny < 10){
					d[x + dx[i]][y + dy[i]]++;
				}
			}
		}
		if (size == 2){
			for (int i = -1; i <= 1; i++){
				for (int j = -1; j <= 1; j++){
					if (x + i >= 0 && x + i < 10 && y + j >= 0 && y + j < 10){
						d[x + i][y + j]++;
					}
				}
			}
		}
		if (size == 3){
			for (int i = -2; i <= 2; i++){
				for (int j = -2; j <= 2; j++){
					if (abs(i) + abs(j) <= 2){
						if (x + i >= 0 && x + i < 10 && y + j>=0 && y + j < 10){
							d[x + i][y + j]++;
						}
					}
				}
			}
		}
	}
	int ans = 0 , MAX = 0;
	REP(i, 10){
		REP(j, 10){
			if (d[i][j] == 0)ans++;
			MAX = max(MAX, d[i][j]);
		}
	}
	cout << ans << endl;
	cout << MAX << endl;
}

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

int paper[10][10] = { 0 };

void drop_ink(int x,int y,int size) {
	if (size == 1) {
		for (int i = 0; i < 3; i++) {
			if (x + i - 1 >= 0 && y >= 0)paper[x + i - 1][y] += 1;
		}
		for (int i = 0; i < 3; i++) {
			if (x >= 0 && y + i - 1 >= 0) {
				if (y + i - 1 != y)paper[x][y + i - 1] += 1;
			}
		}
	}
	else if (size == 2) {
		for (int i = 0; i < 3; i++) {
			if (x + 1 >= 0 && y - 1 + i >= 0) {
				paper[x + 1][y - 1 + i] += 1;
				}
			}
		for (int i = 0; i < 3; i++) {
			if (x >= 0 && y - 1 + i >= 0) {
				paper[x][y - 1 + i] += 1;
				}
			}
		for (int i = 0; i < 3; i++) {
			if (x - 1 >= 0 && y - 1 + i >= 0) {
				paper[x - 1][y - 1 + i] += 1;
				}
			}
	}
	else if (size == 3) {
		for (int i = 0; i < 3; i++) {
			if (x + 1 >= 0 && y - 1 + i >= 0) {
				paper[x + 1][y - 1 + i] += 1;
			}
		}
		for (int i = 0; i < 5; i++) {
			if (x >= 0 && y - 2 + i >= 0) {
				paper[x][y - 2 + i] += 1;
			}
		}
		for (int i = 0; i < 3; i++) {
			if (x - 1 >= 0 && y - 1 + i >= 0) {
				paper[x - 1][y - 1 + i] += 1;
			}
		}
		if (x + 2 >= 0 && y >= 0)paper[x + 2][y] += 1;
		if (x - 2 >= 0 && y >= 0)paper[x - 2][y] += 1;
	}
}
int main() {
	char x[1], y[1], size[1]; char tem[5];
	int white = 0; int most_intense=0;
	while(cin>>tem) {
		x[0] = tem[0]; y[0] = tem[2]; size[0] = tem[4];
		drop_ink(atoi(x),atoi(y),atoi(size));
	}
	for (int i = 0; i < 10; i++) {
		for (int j = 0; j < 10; j++) {
			if (paper[j][i] == 0)white += 1;
			if (most_intense < paper[j][i])most_intense = paper[j][i];
		}
	}
	cout << white << endl << most_intense ;
	return 0;
}

C++: #include <cstdio>
#include <algorithm>

void ink(char[][10],int,int,int);
void change(char[][10],int,int,int);

int main(void){
	char paper[10][10]={0};
	int white=0,max_ink=0;

	for(int x,y,size;scanf("%d,%d,%d",&x,&y,&size)!=EOF;)
		ink(paper,x,y,size);

	for(int i=0;i<10;i++)
		for(int j=0;j<10;j++){
			if(paper[i][j]==0)
				white++;
			max_ink=std::max(max_ink,int(paper[i][j]));
		}

	printf("%d\n%d",white,max_ink);
	return 0;
}

void ink(char paper[][10],int x,int y,int size){
	switch(size){
		case 1:
			ink(paper,x,y,2);
			for(int i=-1;i<=1;i+=2)
				for(int j=-1;j<=1;j+=2)
					change(paper,x+i,y+j,-1);
			change(paper,x,y,-1);
			break;
		case 2:
			for(int i=-1;i<=1;i++)
				for(int j=-1;j<=1;j++)
					change(paper,x+i,y+j,1);
			break;
		case 3:
			ink(paper,x,y,2);
			change(paper,x-2,y,1);
			change(paper,x+2,y,1);
			change(paper,x,y-2,1);
			change(paper,x,y+2,1);
			break;
	}
}

void change(char paper[][10],int x,int y,int inc){
	if(x>=0&&x<10&&y>=0&&y<10)
		paper[x][y]+=inc;
}

C++: #include <iostream>
#include <string>
#include <vector>
#include <cmath>
#include <algorithm>
#include <cstdlib>
#include <ctime>
#include <cstdio>
#include <functional>
#include <complex>
using namespace std;
int main() {
	int paper[14][14] = { 0 };
	int fl, x, y;
	char split;
	while (cin >> y >> split >> x >> split >> fl) {
		if (fl == 2) {
			for (int i = 0;i < 3;i++) {
				for (int j = 0;j < 3;j++) {
					paper[x + 1 + i][y + 1 + j] += 1;
				}
			}
		}
		if (fl == 1) {
			paper[x + 2][y + 2] += 1;
			paper[x + 1][y + 2] += 1;
			paper[x + 2][y + 1] += 1;
			paper[x + 3][y + 1] += 1;
			paper[x + 1][y + 3] += 1;
		}
		if (fl == 3) {
			for (int i = 0;i < 3;i++) {
				for (int j = 0;j < 3;j++) {
					paper[x + 1 + i][y + 1 + j] += 1;
				}
			}
			paper[x][y + 2] += 1;
			paper[x + 4][y + 2] += 1;
			paper[x + 2][y + 4] += 1;
			paper[x + 2][y] += 1;

		}
	}
		int count = 0;
		int ans = 0;
		for (int i = 2;i < 12;i++) {
			for (int j = 2;j < 12;j++) {
				if (paper[i][j] == 0) count += 1;
				ans = max(ans, paper[i][j]);
			}
		}
	cout << count << endl;
	cout << ans << endl;
	return 0;
}