結果

問題 No.1016 三目並べ
ユーザー hedwig100hedwig100
提出日時 2020-04-03 22:52:13
言語 C++14
(gcc 12.3.0 + boost 1.83.0)
結果
RE  
実行時間 -
コード長 2,061 bytes
コンパイル時間 1,667 ms
コンパイル使用メモリ 170,816 KB
実行使用メモリ 14,016 KB
最終ジャッジ日時 2024-07-03 05:19:38
合計ジャッジ時間 8,555 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 RE -
testcase_01 TLE -
testcase_02 -- -
testcase_03 -- -
testcase_04 -- -
testcase_05 -- -
testcase_06 -- -
testcase_07 -- -
testcase_08 -- -
testcase_09 -- -
testcase_10 -- -
権限があれば一括ダウンロードができます
コンパイルメッセージ
main.cpp: In function 'int sub()':
main.cpp:78:1: warning: control reaches end of non-void function [-Wreturn-type]
   78 | }
      | ^
main.cpp:58:43: warning: 'idxo' may be used uninitialized [-Wmaybe-uninitialized]
   58 |                 if (idxo + 1 == i || idxo + cnt_ + cnto == i) {
      |                                      ~~~~~^~~~~~
main.cpp:48:9: note: 'idxo' was declared here
   48 |     int idxo;
      |         ^~~~

ソースコード

diff #

#include <bits/stdc++.h>
#define rep(i,n) for (int i = 0; i < (n); i ++)
using namespace std;
typedef long long ll;
typedef pair<int,int> P;
typedef pair<ll,ll> PL;
const ll MOD = 1e9 + 7;
const ll INF = 1e10;
const vector<int> dy = {-1,0,1,0};
const vector<int> dx = {0,1,0,-1};

int sub() {
    int n;
    string s;
    cin >> n >> s;
    if (n <= 2) {
        cout << 'X' << endl;
        return 0;
    }
    rep(i,n - 2) {
        if (s[i] == 'o' && s[i + 1] == 'o' && s[i + 2] == 'o') {
            cout << 'O' << endl;
            return 0;
        }  
        if (s[i] == 'o' && s[i + 1] == '-' && s[i + 2] == 'o') {
            cout << 'O' << endl;
            return 0;
        }
    }

    rep(i,n - 1) {
        if (s[i] == 'o' && s[i + 1] == 'o') {
            if (i == 0) {
                if (s[i + 2] == 'x') continue;
                else {cout << 'O' << endl; return 0;; }
            } 
            if (i == n - 2 ) {
                if (s[i - 1] == 'x') continue;
                else {cout << 'O' << endl; return 0;}
            }
            if (s[i - 1] == 'x' && s[i + 2] == 'x') continue;
            else {cout << 'O' << endl; return 0;}
        }
    }
    
    int cnt_ = 0;
    int cnto = 0;
    int idxo;
    rep(i,n) {
        if (s[i] == 'x') {
            if (cnt_ + cnto == 4) {
                if (cnto == 1 && ((idxo + 2 == i) || (idxo + 3 == i))) {
                    cout << 'O' << endl;;
                    return 0;
                }
            }
            if  (cnt_ + cnto >= 5) {
                if (idxo + 1 == i || idxo + cnt_ + cnto == i) {
                    continue;
                }
                else {
                    cout << 'O' << endl;
                    return 0;
                }
            }
            cnto = 0;
            cnt_ = 0;
        }
        if (s[i] == 'o') {
            idxo = i;
            cnto ++;
        }
        if (s[i] == '-') {
            cnt_ ++;
        }
    }
    cout << 'X' << endl;
}

int main() {
    int t; cin >> t;
    rep(_,t) {
        sub();
    }
}
0