#include #include #include #include #include using namespace std; const int SZ = 15; const int di[4] = {0, -1, 0, 1}; const int dj[4] = {-1, 0, 1, 0}; bool Good(char c) { if (c == '1' || c == '2' || c == 'H' || c == '.' || c == '#') return true; return false; } char field[SZ][SZ]; int num[SZ][SZ]; struct move { int i,j,d,n; move(int i, int j, int d, int n):i(i),j(j),d(d),n(n){} move(){} }; vector moves; int main(int argc, char *argv[]) { srand((unsigned)time(NULL)); int we = atoi(argv[1]); char enemyhive = (char)(3 - we + '0'); int i, j; while (1) { for (i = 0; i < SZ; i++) { for (j = 0; j < SZ; j++) { char c = getchar(); while (!Good(c)) c = getchar(); field[i][j] = c; } } for (i = 0; i < SZ; i++) { for (j = 0; j < SZ; j++) { scanf("%d", &num[i][j]); } } moves.clear(); for (i = 0; i < SZ; i++) for (j = 0; j < SZ; j++) if (num[i][j] > 0) { vector dirs; int k; for (k = 0; k < 4; k++) { int ni, nj; ni = i + di[k]; nj = j + dj[k]; if(ni<0 || ni>=SZ || nj<0 || nj>=SZ) continue; if(field[ni][nj]=='#') continue; dirs.push_back(k); } int kol1=num[i][j]/dirs.size(); int kol2=num[i][j]%dirs.size(); for(k=0;k