#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define FOR_EACH_C (p,c) for(p=(c).begin(); p!=(c).end();p++) #define FOR_EACH (p,q,r) for(p=q;p!=r;p++) typedef vector ivec_t; typedef vector imat_t; typedef vector icube_t; #ifndef DEBUG #define cin fin ifstream fin("B.txt"); #endif #define debug cout enum{BLACK, WHITE, UNKNOWN}; int g_winPlayer; int g_winProcess; int g_m, g_n; int isValidLoc(int loc, int way) { return (loc + g_m * way >= 0 && loc + g_m * way <= g_n); } bool IsInRange(int a) { return 0 <= a && a < g_n; } bool IsOK(int h,int r,int c) { return IsInRange(h) && IsInRange(r) && IsInRange(c); } int GetWinPlayerSub(icube_t &gameBoard, int heightWay, int rowWay, int colWay) { // debug << "dh,dr,dc"<> n >> m >> p; if(n == 0 && m == 0 && p == 0) return false; g_m = m; g_n = n; icube_t gameBoard(n, imat_t(n, ivec_t(n, UNKNOWN))); imat_t ballNum(n, ivec_t(n, 0)); int currentPlayer = BLACK; // boll no_more_peg_flg = false; for(int i=0;i> row >> col; row--; col--; if(g_winPlayer != UNKNOWN) continue; gameBoard[ballNum[row][col]][row][col] = currentPlayer; ballNum[row][col]++; // for(int l=0;l