#include #include #include using namespace std; #define REP(i,first,last) for (int i=first;i y ? x : y) #define MIN(x,y) (x < y ? x : y) int N; vector game_board; int calc(vector gb){ vector points(N, 0); int count = 0; for (int i=0;i gb, int idx){ if (idx == gb.size()){ return calc(gb); } int result = 0; if (gb[idx] == '-') { vector gb_1 = gb; gb_1[idx] = 'o'; vector gb_2 = gb; gb_2[idx] = 'x'; int res_1 = get_order(gb_1, idx + 1); int res_2 = get_order(gb_2, idx + 1); if (res_1 == 1 || res_2 == 1) { return 1; } else { return MIN(res_1, res_2); } } else { return get_order(gb, idx + 1); } } int main(){ cin >> N; char val; REP(i,0,N) { REP(j,0,N) { cin >> val; if (i < j) game_board.push_back(val); } } cout << get_order(game_board, 0) << endl; }