AOJ 0026

解法
やるだけ

#include <cstdio>
#include <algorithm>
using namespace std;

const int MAX = 10;
int a[MAX+4][MAX+4];
int lx[13]={-2,-1,-1,-1,0,0,0,0,0,1,1,1,2};
int ly[13]={0,-1,0,1,-2,-1,0,1,2,-1,0,1,0};
int mx[9]={-1,-1,-1,0,0,0,1,1,1};
int my[9]={-1,0,1,-1,0,1,-1,0,1};
int sx[5]={-1,0,0,0,1};
int sy[5]={0,-1,0,1,0};
int main(){
	int x, y, s;
	int *ix[3];
	int *iy[3];
	int n[3];
	n[0] = 5; n[1] = 9; n[2] = 13;
	ix[0] = sx; ix[1] = mx; ix[2] = lx;
	iy[0] = sy; iy[1] = my; iy[2] = ly;
	while(scanf("%d,%d,%d", &x, &y, &s) != EOF){
		x+=2; y+=2; s--;
		for(int i = 0; i < n[s]; i++){
			a[x+*(ix[s]+i)][y+*(iy[s]+i)]++;
		}
/*
		for(int i=2; i<12; i++){
			for(int j=2; j<12; j++)
				printf("%d", a[j][i]);
			puts("");
		}
		puts("");
*/
	}
	int m=0, num=0;
	for(int i=2; i<12; i++){
		for(int j=2; j<12; j++){
			m=max(m, a[j][i]);
			num+=(a[j][i])?1:0;
		}
	}
	printf("%d\n%d\n", 100-num, m);
	return 0;
}