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 <stdio.h>
int main(){
    int a[14][14],x,y,k,ans=0,top=0;
    for(int i=0;i<14;i++)
        for(int j=0;j<14;j++)
            a[i][j]=0;
    while(scanf("%d,%d,%d",&x,&y,&k)!=EOF){
        a[x+1][y+2]++;
        a[x+2][y+2]++;
        a[x+3][y+2]++;
        a[x+2][y+1]++;
        a[x+2][y+3]++;
        if(k>1){
            a[x+3][y+3]++;
            a[x+1][y+1]++;
            a[x+3][y+1]++;
            a[x+1][y+3]++;
        }
        if(k>2) {
            a[x+4][y+2]++;
            a[x][y+2]++;
            a[x+2][y]++;
            a[x+2][y+4]++;
        }
    }
    for(int i=2;i<12;i++){
        for(int j=2;j<12;j++){
            ans+=a[i][j];
            if(a[i][j]>top)top=a[i][j];
        }
    }
    printf("%d\n%d\n",ans,top);
}

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

int main(void){
	int map[10][10];
	int x,y,s;
	int n=0,m=0;
	memset(map,0,sizeof(map));
	while(~scanf("%d,%d,%d",&x,&y,&s)){
		if(s>=1){
			map[x][y]+=1;
			map[x-1][y]+=1;
			map[x+1][y]+=1;
			map[x][y-1]+=1;
			map[x][y+1]+=1;
		}
		if(s>=2){
			map[x-1][y-1]+=1;
			map[x+1][y-1]+=1;
			map[x-1][y+1]+=1;
			map[x+1][y+1]+=1;
		}
		if(s>=3){
			map[x][y-2]+=1;
			map[x][y+2]+=1;
			map[x-2][y]+=1;
			map[x+2][y]+=1;
		}
	}
	for(int i=0;i<10;i++){
		for(int j=0;j<10;j++){
			if(map[i][j]==0)n++;
			if(map[i][j]>m)m=map[i][j];
		}
	}
	printf("%d\n",n);
	printf("%d\n",m);
    return 0;
}

C++: #include <iostream>

using namespace std;

int main() {
	int paper[10][10] = {};
	int x, y, siz;
	char c;
	while (cin >> x >> c >> y >> c >> siz) {
		switch (siz) {
			case 3:
				paper[y-2][x] ++;
				paper[y][x-2] ++;
				paper[y][x+2] ++;
				paper[y+2][x] ++;
			case 2:
				paper[y-1][x-1] ++;
				paper[y-1][x+1] ++;
				paper[y+1][x-1] ++;
				paper[y+1][x+1] ++;
			case 1:
				paper[y-1][x] ++;
				paper[y][x-1] ++;
				paper[y][x] ++;
				paper[y][x+1] ++;
				paper[y+1][x] ++;
		}
	}
	int empty = 0, mx = 0;
	for (int i=0; i<10; ++i) {
		for (int j=0; j<10; ++j) {
			empty += !paper[i][j];
			mx = max(mx, paper[i][j]);
		}
	}
	cout << empty << endl;
	cout << mx << endl;

	return 0;
}

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

using namespace std;

constexpr auto N=10;

int main()
{
  int p[N*N]={};
  vector<int> inc[] = {
    { -N, -1, 0, 1, N },
    { -N-1, -N, -N+1, -1, 0, 1, N-1, N, N+1 },
    { -N-N, -N-1, -N, -N+1, -2, -1, 0, 1, 2, N-1, N, N+1, N+N }
  };

  int x, y, s;
  while( scanf( "%d,%d,%d", &x, &y, &s ) != EOF ) {
    {
      auto const base = y*N+x;
      for( auto const i : inc[s-1] ) {
        if ( base+i >= 0 && base+i < N*N )
          ++p[base+i];
      }
    };
  }
  cout
    << count( p, p+N*N, 0 ) << endl
    << *max_element( p, p+N*N ) << endl;
}

C++: #include <iostream>
#include <cstdio>
using namespace std;
int main(){
	int x,y,s;
	char com;
	int a[10][10];
	for(int i=0;i<100;i++) a[i/10][i%10] = 0;
	while(cin >> x >> com >> y >> com >> s){
		a[x][y]++;
		if(x>0) a[x-1][y]++;
		if(x<9) a[x+1][y]++;
		if(y>0) a[x][y-1]++;
		if(y<9) a[x][y+1]++;
		if(s>1){
			if(x>0 and y>0) a[x-1][y-1]++;
			if(x>0 and y<9) a[x-1][y+1]++;
			if(x<9 and y>0) a[x+1][y-1]++;
			if(x<9 and y<9) a[x+1][y+1]++;
		}
		if(s==3){
			if(x>1) a[x-2][y]++;
			if(x<8) a[x+2][y]++;
			if(y>1) a[x][y-2]++;
			if(y<8) a[x][y+2]++;
		}
	}
	int c = 0;
	int b = 0;
	for(int i=0;i<100;i++){
		int t = a[i/10][i%10];
		if(t==0) c++;
		if(b<t) b = t;
	}
	cout << c << endl;
	cout << b << endl;
}

C++: #include<cstdio>
#include<algorithm>
using namespace std;
class Point{
public:
   int x,y;
   Point(){}
   Point(int _x,int _y){
      x = _x; y = _y;
   }
}ink[13] = {Point(0,-1),Point(-1,0),Point(0,0),Point(1,0),Point(0,1),
            Point(-1,-1),Point(1,-1),Point(-1,1),Point(1,1),
            Point(0,-2),Point(-2,0),Point(2,0),Point(0,2)
            };

int main(void){
   int x,y,sz,blank = 100,ma = 0;
   int field[11][11] = {0};
   while(scanf("%d,%d,%d",&x,&y,&sz) != EOF){
      for(int i = 0;i < 13;i++){
         if(sz == 1 && i >= 5) break;
         if(sz == 2 && i >= 9) break;
         int _x = x + ink[i].x,_y = y + ink[i].y;
         if(0 <= _x&&_x < 10 && 0 <= _y&&_y < 10){
               if(field[_x][_y] == 0) blank--;
               ma = max(++field[_x][_y],ma);
         }
      }
   }
   printf("%d\n%d\n",blank,ma);
   return 0;
}

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

int ds[] = {5, 9, 13};
int dx[] = {0, 0, -1, 0, 1, -1, -1, 1, 1, 0, -2, 0, 2};
int dy[] = {0, -1, 0, 1, 0, -1, 1, 1, -1, -2, 0, 2, 0};

int main()
{
  int x, y, s;
  vector<vector<int> > paper(10, vector<int>(10, 0));
  while (scanf("%d,%d,%d", &x, &y, &s) != EOF) {
    for (int i = 0; i < ds[s-1]; ++i) {
      int xx = x + dx[i];
      int yy = y + dy[i];

      if (xx >= 0 && xx < 10 && yy >= 0 && yy < 10)
	++paper[yy][xx];
    }
  }

  int plain = 0, con = 0;
  for (int i = 0; i < paper.size(); ++i) {
    for (int j = 0; j < paper[0].size(); ++j) {
      if (paper[i][j] == 0)
	++plain;
      con = max(con, paper[i][j]);
    }
  }
  
  cout << plain << endl << con << endl;

  return 0;
}

C++: #include<iostream>
#include<algorithm>
using namespace std;
int x,y,size,maxm,cnt;
int t[10][10];
char ch;
void pl(int y,int x){
  if(y<0||y==10||x<0||x==10)return;
  t[y][x]++;
  maxm=max(maxm,t[y][x]);
}

int main(){
  for(int i=0;i<10;i++)
    for(int j=0;j<10;j++)
      t[i][j]=0;
  maxm=cnt=0;
  while(cin>>x>>ch>>y>>ch>>size){
    if(size==1){
      pl(y,x),pl(y+1,x),pl(y-1,x),pl(y,x+1),pl(y,x-1);
    }else if(size==2){
      for(int i=y-1;i<y+2;i++){
	for(int j=x-1;j<x+2;j++){
	  pl(i,j);
	}
      }
    }else{
      for(int i=y-2;i<y+3;i++){
	for(int j=x-2;j<x+3;j++){
	  if((i-y)*(i-y)+(j-x)*(j-x)<=4)pl(i,j);
	}
      }
    }
  }
  for(int i=0;i<10;i++)
    for(int j=0;j<10;j++)
      cnt+=(t[i][j]==0);
  cout<<cnt<<endl<<maxm<<endl;
  return 0;
}