結果

問題 No.1016 三目並べ
ユーザー hedwig100hedwig100
提出日時 2020-04-03 22:55:00
言語 C++14
(gcc 12.3.0 + boost 1.83.0)
結果
WA  
実行時間 -
コード長 2,056 bytes
コンパイル時間 1,583 ms
コンパイル使用メモリ 168,076 KB
実行使用メモリ 4,500 KB
最終ジャッジ日時 2023-09-16 04:03:02
合計ジャッジ時間 2,286 ms
ジャッジサーバーID
(参考情報)
judge12 / judge13
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 1 ms
4,376 KB
testcase_01 AC 2 ms
4,380 KB
testcase_02 WA -
testcase_03 WA -
testcase_04 WA -
testcase_05 WA -
testcase_06 WA -
testcase_07 WA -
testcase_08 WA -
testcase_09 WA -
testcase_10 WA -
権限があれば一括ダウンロードができます

ソースコード

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};

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

    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 ;}
            } 
            if (i == n - 2 ) {
                if (s[i - 1] == 'x') continue;
                else {cout << 'O' << endl; return ;}
            }
            if (s[i - 1] == 'x' && s[i + 2] == 'x') continue;
            else {cout << 'O' << endl; return ;}
        }
    }
    
    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 ;
                }
            }
            if  (cnt_ + cnto >= 5) {
                if (idxo + 1 == i || idxo + cnt_ + cnto == i) {
                    continue;
                }
                else {
                    cout << 'O' << endl;
                    return ;
                }
            }
            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