結果

問題 No.1016 三目並べ
ユーザー hedwig100hedwig100
提出日時 2020-04-03 22:53:46
言語 C++14
(gcc 12.3.0 + boost 1.83.0)
結果
RE  
実行時間 -
コード長 2,065 bytes
コンパイル時間 1,970 ms
コンパイル使用メモリ 171,356 KB
実行使用メモリ 6,948 KB
最終ジャッジ日時 2024-07-03 05:21:22
合計ジャッジ時間 4,365 ms
ジャッジサーバーID
(参考情報)
judge4 / judge5
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 RE -
testcase_01 RE -
testcase_02 RE -
testcase_03 RE -
testcase_04 RE -
testcase_05 RE -
testcase_06 RE -
testcase_07 RE -
testcase_08 RE -
testcase_09 RE -
testcase_10 RE -
権限があれば一括ダウンロードができます
コンパイルメッセージ
main.cpp: In function 'int sub()':
main.cpp:78:1: warning: control reaches end of non-void function [-Wreturn-type]
   78 | }
      | ^

ソースコード

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 = 5;
    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