/* -*- coding: utf-8 -*- * * 43.cc: No.43 野球の試合 - yukicoder */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; /* constant */ const int MAX_N = 6; const int MAX_M = MAX_N * (MAX_N - 1) / 2; typedef long long ll; const int INF = 1 << 30; const ll LINF = 1LL << 60; /* typedef */ typedef vector vi; typedef queue qi; typedef pair pii; /* global variables */ string lines[MAX_N]; int gs[MAX_M][2], wins[MAX_N]; /* subroutines */ /* main */ int main() { int n; cin >> n; for (int i = 0; i < n; i++) cin >> lines[i]; int m = 0; for (int i = 0; i < n; i++) for (int j = i + 1; j < n; j++) gs[m][0] = i, gs[m][1] = j, m++; //printf("n=%d, m=%d\n", n, m); int mbits = 1 << m; int mini = n; for (int bits = 0; bits < mbits; bits++) { memset(wins, 0, sizeof(wins)); bool ok = true; for (int i = 0; ok && i < m; i++) { int &i0 = gs[i][0], &i1 = gs[i][1]; if ((bits >> i) & 1) { if (lines[i0][i1] == 'o') ok = false; else wins[i1]++; } else { if (lines[i0][i1] == 'x') ok = false; else wins[i0]++; } } if (! ok) continue; //for (int i = 0; i < n; i++) printf("%d", wins[i]); putchar('\n'); int w0 = wins[0]; sort(wins, wins + n, greater()); int wn = unique(wins, wins + n) - wins; //printf("wn=%d\n", wn); for (int i = 0; i < wn; i++) if (wins[i] == w0 && mini > i) mini = i; } printf("%d\n", mini + 1); return 0; }