結果
| 問題 |
No.1016 三目並べ
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2020-04-03 21:45:40 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,999 bytes |
| コンパイル時間 | 1,679 ms |
| コンパイル使用メモリ | 180,612 KB |
| 実行使用メモリ | 10,624 KB |
| 最終ジャッジ日時 | 2024-07-03 01:58:02 |
| 合計ジャッジ時間 | 9,179 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 6 WA * 1 TLE * 2 -- * 1 |
ソースコード
#include"bits/stdc++.h"
using namespace std;
#define REP(k,m,n) for(int (k)=(m);(k)<(n);(k)++)
#define rep(i,n) REP((i),0,(n))
using ll = long long;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
using tp3 = tuple<int, int, int>;
using Mat = vector<vector<ll>>;
constexpr int INF = 1 << 28;
constexpr ll INFL = 1ll << 60;
constexpr int dh[4] = { 0,1,0,-1 };
constexpr int dw[4] = { -1,0,1,0 };
bool isin(const int H, const int W, const int h, const int w) {
return 0 <= h && h < H && 0 <= w && w < W;
}
template<typename T>
T minch(T& l, T r) {
return l = min(l, r);
}
template<typename T>
T maxch(T& l, T r) {
return l = max(l, r);
}
template<typename T>
void output(const T& val) {
cout << val << endl;
}
template<typename T>
void output(const vector<T>& vec, const bool newline = false) {
for (const T& val : vec)cout << val << (newline ? '\n' : ' '); cout << endl;
}
template<typename T>
void output(const vector<vector<T>>& mat) {
for (const auto& row : mat)output(row);
}
// ============ template finished ============
bool cont3(const string& s) {
int cnt = 0;
for (char c : s) {
if (c == 'o')cnt++;
else cnt = 0;
if (cnt == 3)return true;
}
return false;
}
bool reach2(const string& s) {
const int N = s.size();
int cnt = 0;
set<int> cand;
rep(i, N - 2) {
map<char, int> mp;
REP(j, i, i + 3)mp[s[j]]++;
if (mp['o'] == 2 && mp['-'] == 1) {
REP(j, i, i + 3)if (s[j] == '-')cand.insert(j);
}
}
return cand.size() >= 2;
}
bool solve(const int N, string& s) {
if (cont3(s) || reach2(s))return true;
for (char& c : s) {
if (c == '-') {
c = 'o';
if (cont3(s) || reach2(s))return true;
c = '-';
}
}
return false;
}
int main()
{
int T;
cin >> T;
while (T--) {
int N;
string s;
cin >> N >> s;
output(solve(N, s) ? "O" : "X");
}
return 0;
}