結果
問題 | No.1016 三目並べ |
ユーザー | kenta255 |
提出日時 | 2020-04-03 22:34:24 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 7 ms / 2,000 ms |
コード長 | 1,801 bytes |
コンパイル時間 | 3,803 ms |
コンパイル使用メモリ | 196,872 KB |
最終ジャッジ日時 | 2025-01-09 13:17:38 |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 10 |
ソースコード
#include <bits/stdc++.h> using namespace std; typedef long long ll; #define P pair<ll,ll> #define FOR(I,A,B) for(ll I = ll(A); I < ll(B); ++I) #define FORR(I,A,B) for(ll I = ll((B)-1); I >= ll(A); --I) #define TO(x,t,f) ((x)?(t):(f)) #define SORT(x) (sort(x.begin(),x.end())) // 0 2 2 3 4 5 8 9 #define POSL(x,v) (lower_bound(x.begin(),x.end(),v)-x.begin()) //xi>=v x is sorted #define POSU(x,v) (upper_bound(x.begin(),x.end(),v)-x.begin()) //xi>v x is sorted #define NUM(x,v) (POSU(x,v)-POSL(x,v)) //x is sorted #define REV(x) (reverse(x.begin(),x.end())) //reverse ll gcd(ll a,ll b){if(a%b==0)return b;return gcd(b,a%b);} ll lcm(ll a,ll b){ll c=gcd(a,b);return ((a/c)*(b/c)*c);} #define NEXTP(x) next_permutation(x.begin(),x.end()) const ll INF=ll(1e16)+ll(7); const ll MOD=1000000007LL; #define out(a) cout<<fixed<<setprecision((a)) //tie(a,b,c) = make_tuple(10,9,87); #define pop_(a) __builtin_popcount((a)) ll keta(ll a){ll r=0;while(a){a/=10;r++;}return r;} ll ketawa(ll a){ll r=0;while(a){r+=a%10;a/=10;}return r;} int main(){ ll T; cin >> T; FOR(t,0,T){ ll n; string s; cin >> n >> s; bool o_win = false; FOR(i,0,n-2){ string k = s.substr(i,3); if(k=="-oo"||k=="oo-"||k=="ooo"||k=="o-o")o_win=true; } FOR(i,0,n-3){ string k = s.substr(i,4); if(k=="-o--"||k=="--o-")o_win=true; } //o(-)o (-)->2n+1 ok vector<pair<char,ll>> len; char b = 'z'; for(auto c:s){ if(b!=c){ len.push_back({c,1}); b = c; }else{ len[len.size()-1].second++; } } FOR(i,2,len.size()){ if(len[i].first=='o' && len[i-2].first=='o' && len[i-1].first=='-' && len[i-1].second%2)o_win=true; } if(o_win){ cout << "O" << "\n"; }else{ cout << "X" << "\n"; } } }