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 <cstdio>
#include <vector>
#include <list>
#include <algorithm>
#include <cmath>
#include <stack>
#include <set>
using namespace std;

#define REP(i,n) for(int (i)=0; (i)<(n); (i)++)
#define FOR(i,a,b) for(int (i)=(a); (i)<(b); (i)++)
#define PUSH(n,v) for(int i=0; i<(n); i++) {int j; cin >> j; v.push_back(j);}
#define ALL(v) v.begin(), v.end()

vector<vector<int>> vv;

void ink(int x, int y) {
    if (x >= 0 && x < 10 && y >= 0 && y < 10) {
        vv[x][y]++;
    }
}

void big(int x, int y) {
    ink(x-2,y);
    ink(x-1,y);
    ink(x,y);
    ink(x+1,y);
    ink(x+2,y);
    ink(x-1,y-1);
    ink(x,y-1);
    ink(x+1,y-1);
    ink(x-1,y+1);
    ink(x,y+1);
    ink(x+1,y+1);
    ink(x,y-2);
    ink(x,y+2);
}

void mid(int x, int y) {
    ink(x-2,y);
    ink(x-1,y);
    ink(x,y);
    ink(x+1,y);
    ink(x+2,y);
    ink(x-1,y-1);
    ink(x,y-1);
    ink(x+1,y-1);
    ink(x-1,y+1);
    ink(x,y+1);
}

void small(int x, int y) {
    ink(x-1,y);
    ink(x,y);
    ink(x+1,y);
    ink(x,y-1);
    ink(x,y+1);
}

int countNotBlank() {
    int cnt = 0;
    REP(i,10) REP(j,10) if (vv[i][j] > 0) cnt++;
    return cnt;
}

int getThickest() {
    int t = 0;
    REP(i,10) REP(j,10) if (vv[i][j] > t) t = vv[i][j];
    return t;
}

int main() {
    REP(i,10) {
        vector<int> v(10,0);
        vv.push_back(v);
    }
    
    int x, y, s;
    while(scanf("%d,%d,%d"), &x, &y, &s) {
        switch (s) {
            case 1:
                small(x,y);
                break;
            case 2:
                mid(x,y);
                break;
            case 3:
                big(x,y);
                break;
                
            default:
                break;
        }
    }
    
    cout << countNotBlank() << endl << getThickest() << endl;
    
    return 0;
}

C++: #include <stdio.h>
#define TIMES 6

/* http://rose.u-aizu.ac.jp/onlinejudge/ProblemSet/description.jsp?id=0026&lang=jp */

int main(void)
{
	int paper[10][10] = {0} ;
	int blank = 0;
	int maxdk = 0;
	int x = 0 ;
	int y = 0 ;
	int size = 0 ;
	
	for ( ; i < TIMES ; i++ ){
	scanf("%d",&x) ;
	scanf(",%d",&y) ;
	scanf(",%d",&size) ;
	
	if(size >= 1){
		if (x+1<10)
			paper[x+1][y]++;
		if (x-1>=0)
			paper[x-1][y]++;
		if (y+1<10)
			paper[x][y+1]++;
		if (y-1>=0)
			paper[x][y-1]++;
		}
		
	if(size >= 2){
		if (x+1<10 && y+1<10)
			paper[x+1][y+1]++;
		if (x-1>=0 && y+1<10)
			paper[x-1][y+1]++;
		if (x-1>=0 && y-1>=0)
			paper[x-1][y-1]++;
		if (x+1<10 && y-1>=0)
			paper[x+1][y-1]++;
		}
		
	if(size >= 3){
		if (x+2<10)
			paper[x+2][y]++;
		if (x-2>=0)
			paper[x-2][y]++;
		if (y+2<10)
			paper[x][y+2]++;
		if (y-2>=0)
			paper[x][y-2]++;
		}
		
/*		printf("%d,",x); printf("%d,",y); printf("%d\n",size);	*/
		
		}
		
		
		for( y = 0 ; y < 10 ; y++ ){
			for( x = 0 ; x < 10 ; x++ ){
				if(paper[x][y] == 0)
				blank++;
				if(paper[x][y] > maxdk)
				maxdk = paper[x][y] ;
			}
		}
		
		printf("----------------\n");
		printf("BLANK:%d\n",blank);
		printf("MAX:%d\n",maxdk);
		
	return 0;
}

C++: #include <iostream>
#include <string>
#include <cctype>
#include <vector>
#include <complex>
#include <cstdio>
using namespace std;

#define loop(i,a,b) for(int i=(a); i<int(b); i++)
#define rep(i,b) loop(i,0,b)

typedef vector<int> vi;
typedef vector<vi> vvi;
typedef long long ll;
typedef complex<double> vec;

double cross(const vec& a, const vec& b) {
    return imag(conj(a)*b);
}

int dx1[] = {1,0,0,-1}; // tateyoko
int dy1[] = {0,1,-1,0};
int dx2[] = {1,1,-1,-1}; // naname
int dy2[] = {-1,1,-1,1};
inline bool in(int x, int y){
    return 0<=x && 0<=y && x<10 && y<10;
}

int main(){
    vvi g(10,vi(10));
    int x,y,s;
    while(scanf("%d,%d,%d", &x,&y,&s)!=EOF){
        g[y][x]++;
        if(s==3){
            rep(d,4){
                for(int t=1; t<=2; t++){
                    int px=x+dx1[d]*t;
                    int py=y+dy1[d]*t;
                    if(in(px,py)) g[py][px]++;
                }
                int px=x+dx2[d];
                int py=y+dy2[d];
                if(in(px,py)) g[py][px]++;
            }
        }else if(s==2){
            rep(d,4){
                int px=x+dx1[d];
                int py=y+dy1[d];
                if(in(px,py)) g[py][px]++;
                px=x+dx2[d];
                py=y+dy2[d];
                if(in(px,py)) g[py][px]++;

            }
        }else if(s==1){
            rep(d,4){
                for(int t=1; t<=1; t++){
                    int px=x+dx1[d]*t;
                    int py=y+dy1[d]*t;
                    if(in(px,py)) g[py][px]++;
                }
            }
        }
    }
    int z=0;
    int ans=-1;
    rep(i,10)rep(j,10){
        if(g[i][j]==0)z++;
        ans=max(ans,g[i][j]);
    }
    cout << z << "\n" << ans << endl;
}

C++: #include<iostream>
#include <stdio.h>
#include <string>
#include <vector>
using namespace std;
int paper[14][14];
int white=0,mdro=0;
int main(){int a,c,e;char b,d;
while(cin>>a>>b>>c>>d>>e){
	if(e==3){
    paper[a][c+2]++;
	paper[a+1][c+1]++;
	paper[a+1][c+2]++;
	paper[a+1][c+3]++;
	paper[a+2][c]++;
	paper[a+2][c+1]++;
	paper[a+2][c+2]++;
	paper[a+2][c+3]++;
	paper[a+2][c+4]++;
	paper[a+3][c+1]++;
	paper[a+3][c+2]++;
	paper[a+3][c+3]++;
	paper[a+4][c+2]++;}else
	if(e==2){
	paper[a+1][c+1]++;
	paper[a+1][c+2]++;
	paper[a+1][c+3]++;
	paper[a+2][c+1]++;
	paper[a+2][c+2]++;
	paper[a+2][c+3]++;
	paper[a+3][c+1]++;
	paper[a+3][c+2]++;
	paper[a+3][c+3]++;}else{
	paper[a+1][c+2]++;
	paper[a+2][c+1]++;
	paper[a+2][c+2]++;
	paper[a+2][c+3]++;
	paper[a+3][c+2]++;}}
for(int i=0;i<10;i++){
for(int ii=0;ii<10;ii++){
	if(paper[i+2][ii+2]==0){
	white++;}else
		if(paper[i+2][ii+2]>mdro){mdro=paper[i+2][ii+2];}}}
cout<<white<<endl<<mdro<<endl;
	return 0;}