結果
問題 | No.1016 三目並べ |
ユーザー |
![]() |
提出日時 | 2020-04-05 17:59:18 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 3 ms / 2,000 ms |
コード長 | 3,736 bytes |
コンパイル時間 | 3,577 ms |
コンパイル使用メモリ | 212,656 KB |
最終ジャッジ日時 | 2025-01-09 14:18:01 |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 10 |
ソースコード
#pragma GCC optimize ("Ofast")#include<bits/stdc++.h>using namespace std;inline int my_getchar_unlocked(){static char buf[1048576];static int s = 1048576;static int e = 1048576;if(s == e && e == 1048576){e = fread_unlocked(buf, 1, 1048576, stdin);s = 0;}if(s == e){return EOF;}return buf[s++];}inline void rd(int &x){int k;int m=0;x=0;for(;;){k = my_getchar_unlocked();if(k=='-'){m=1;break;}if('0'<=k&&k<='9'){x=k-'0';break;}}for(;;){k = my_getchar_unlocked();if(k<'0'||k>'9'){break;}x=x*10+k-'0';}if(m){x=-x;}}inline void rd(char &c){int i;for(;;){i = my_getchar_unlocked();if(i!=' '&&i!='\n'&&i!='\r'&&i!='\t'&&i!=EOF){break;}}c = i;}inline int rd(char c[]){int i;int sz = 0;for(;;){i = my_getchar_unlocked();if(i!=' '&&i!='\n'&&i!='\r'&&i!='\t'&&i!=EOF){break;}}c[sz++] = i;for(;;){i = my_getchar_unlocked();if(i==' '||i=='\n'||i=='\r'||i=='\t'||i==EOF){break;}c[sz++] = i;}c[sz]='\0';return sz;}inline int rd_int(void){int x;rd(x);return x;}struct MY_WRITER{char buf[1048576];int s;int e;MY_WRITER(){s = 0;e = 1048576;}~MY_WRITER(){if(s){fwrite_unlocked(buf, 1, s, stdout);}}};MY_WRITER MY_WRITER_VAR;void my_putchar_unlocked(int a){if(MY_WRITER_VAR.s == MY_WRITER_VAR.e){fwrite_unlocked(MY_WRITER_VAR.buf, 1, MY_WRITER_VAR.s, stdout);MY_WRITER_VAR.s = 0;}MY_WRITER_VAR.buf[MY_WRITER_VAR.s++] = a;}inline void wt_L(char a){my_putchar_unlocked(a);}inline void wt_L(const char c[]){int i=0;for(i=0;c[i]!='\0';i++){my_putchar_unlocked(c[i]);}}int N;char S[1002];int a[1000];int main(){int Lj4PdHRW;int KL2GvlyY = rd_int();for(Lj4PdHRW=(0);Lj4PdHRW<(KL2GvlyY);Lj4PdHRW++){int i;rd(N);rd(S);for(i=(0);i<(N);i++){if(S[i]=='o'){a[i] =1;}else if(S[i]=='-'){a[i] =0;}else{a[i] =-100;}}for(i=(2);i<(N);i++){if(a[i-2]+a[i-1]+a[i] >= 2){wt_L("O");wt_L('\n');goto Q5VJL1cS;}}for(i=(3);i<(N);i++){if(S[i-3]=='-' && S[i-2]=='o' && S[i-1]=='-' && S[i]=='-'){wt_L("O");wt_L('\n');goto Q5VJL1cS;}}for(i=(3);i<(N);i++){if(S[i-3]=='-' && S[i-2]=='-' && S[i-1]=='o' && S[i]=='-'){wt_L("O");wt_L('\n');goto Q5VJL1cS;}}for(i=(1);i<(N);i++){if(S[i-1]=='x' && S[i]=='o'){int j = i;int k = 0;while(S[j+1]=='-'){j++;k++;}if(k%2==0){continue;}if(S[j+1]=='o'){wt_L("O");wt_L('\n');goto Q5VJL1cS;}}}wt_L("X");wt_L('\n');Q5VJL1cS:;}return 0;}// cLay varsion 20200404-1// --- original code ---// int N; char S[1002];// int a[1000];// {// REP(rd_int()){// rd(N,S);// rep(i,N) a[i] = if[S[i]=='o', 1, S[i]=='-', 0, -100];// rep(i,2,N) if(a[i-2]+a[i-1]+a[i] >= 2) wt("O"), break_continue;// rep(i,3,N) if(S[i-3]=='-' && S[i-2]=='o' && S[i-1]=='-' && S[i]=='-') wt("O"), break_continue;// rep(i,3,N) if(S[i-3]=='-' && S[i-2]=='-' && S[i-1]=='o' && S[i]=='-') wt("O"), break_continue;// rep(i,1,N) if(S[i-1]=='x' && S[i]=='o'){// int j = i, k = 0;// while(S[j+1]=='-') j++, k++;// if(k%2==0) continue;// if(S[j+1]=='o') wt("O"), break_continue;// }// wt("X");// }// }