結果
問題 | No.43 野球の試合 |
ユーザー |
|
提出日時 | 2018-03-21 11:29:34 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 6 ms / 5,000 ms |
コード長 | 1,346 bytes |
コンパイル時間 | 1,669 ms |
コンパイル使用メモリ | 169,168 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-06-24 19:26:09 |
合計ジャッジ時間 | 2,304 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 7 |
ソースコード
#include <bits/stdc++.h>using namespace std;char S[ 6 ][ 10 ];bool b[ 6 ][ 6 ];int X[ 20 ];int Y[ 20 ];int iBlank;int N;void Set( const int iNum ){int i;int n;bool bWin;n = iNum;for( i = 0; i < iBlank; i++ ){bWin = (bool) ( n % 2 );b[ Y[ i ] ][ X[ i ] ] = bWin;b[ X[ i ] ][ Y[ i ] ] = ! bWin;n /= 2;}}int Count(){int i;int j;int k;int iWin[ 6 ];int iPlayer;int iCnt;iPlayer = 0;for( j = 0; j < N; j++ ){if( b[ 0 ][ j ] ) iPlayer++;}iCnt = 1;for( i = 1; i < N; i++ ){iWin[ i ] = 0;for( j = 0; j < N; j++ ){if( b[ i ][ j ] ) iWin[ i ]++;}if( iPlayer >= iWin[ i ] ) continue;for( k = 1; k < i; k++ ){if( iWin[ k ] == iWin[ i ] ) break;}if( k == i ) iCnt++;}return iCnt;}int main(){int i;int j;int a;int iMax;int iLoop;cin >> N;for( i = 0; i < N; i++ ) cin >> S[ i ];iLoop = 1;iBlank = 0;for( i = 0; i < N; i++ ){for( j = 0; j < N; j++ ){if( i == j ) continue;switch( S[ i ][ j ] ){case 'o':b[ i ][ j ] = true;break;case '-':if( j > i ){X[ iBlank ] = j;Y[ iBlank ] = i;iBlank++;iLoop *= 2;}}}}iMax = N;for( i = 0; i < iLoop; i++ ){Set( i );if( iMax > ( j = Count() ) ) iMax = j;}cout << iMax << endl;return 0;}