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; }