ZOJ Problem Set - 1051
A New Growth Industry
#include<stdio.h>
int main(void)
{
int days, i, j, k,n,m;
int d[16], density[22][22][2] = { 0 };
while (scanf("%d", &n) != EOF)
{
for (i = 0; i < n; ++i)
{
scanf("%d", &days);
for (j = 0; j < 16; ++j)
scanf("%d", &d[j]);
for (j = 1; j < 21; ++j)
for (k = 1; k < 21; ++k)
scanf("%d", &density[j][k][0]);
for (m = 0; m < days; ++m)
for (j = 1; j < 21; ++j)
for (k = 1; k < 21; ++k)
{
density[j][k][(m + 1) % 2]= density[j][k][m % 2] +
d[density[j][k][m % 2] + density[j - 1][k][m % 2]
+ density[j + 1][k][m % 2] + density[j][k - 1][m % 2]
+ density[j][k + 1][m % 2]];
if (density[j][k][(m + 1) % 2]>3)
density[j][k][(m + 1) % 2] = 3;
if (density[j][k][(m + 1) % 2] < 0)
density[j][k][(m + 1) % 2] = 0;
}
for (j = 1; j < 21; ++j)
{
for (k = 1; k < 21; ++k)
switch (density[j][k][m % 2])
{
case 0: printf("."); break;
case 1: printf("!"); break;
case 2: printf("X"); break;
case 3: printf("#"); break;
default:break;
}
printf("\n");
}
if (i != n - 1)
printf("\n");
}
}
return 0;
}