結果
| 問題 |
No.1613 Rush and Remove
|
| コンテスト | |
| ユーザー |
tko919
|
| 提出日時 | 2021-08-24 01:35:44 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 7 ms / 2,000 ms |
| コード長 | 1,634 bytes |
| コンパイル時間 | 2,501 ms |
| コンパイル使用メモリ | 201,084 KB |
| 最終ジャッジ日時 | 2025-01-24 01:44:54 |
|
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 36 |
ソースコード
#define _USE_MATH_DEFINES
#include <bits/stdc++.h>
using namespace std;
//template
#define rep(i,a,b) for(int i=(int)(a);i<(int)(b);i++)
#define ALL(v) (v).begin(),(v).end()
using ll=long long int;
const int inf = 0x3fffffff; const ll INF = 0x1fffffffffffffff; const double eps=1e-12;
template<typename T>inline bool chmax(T& a,T b){if(a<b){a=b;return 1;}return 0;}
template<typename T>inline bool chmin(T& a,T b){if(a>b){a=b;return 1;}return 0;}
ll mod(ll a,ll m){return (a%m+m)%m;}
ll mpow(ll a,ll t,ll m){
ll res=1;
while(t){
if(t&1)res=mod(res*a,m);
a=mod(a*a,m); t>>=1;
} return res;
}
ll minv(ll a,ll m){
ll b=m,u=1,v=0;
while(b){
ll t=a/b;
a-=t*b; swap(a,b);
u-=t*v; swap(u,v);
} u=mod(u,m); return u;
}
int get_root(int p){ //primitive root
vector<int> ds;
for(int x=1;x*x<=p-1;x++)if((p-1)%x==0){
ds.push_back(x);
if(x*x!=p-1)ds.push_back((p-1)/x);
}
sort(ALL(ds));
ds.pop_back();
for(int x=1;x<p;x++){
for(auto& d:ds){
if(mpow(x,d,p)==1)goto fail;
}
return x;
fail:;
} assert(0);
}
int main(){
int h,w;
cin>>h>>w;
vector<string> g(h);
rep(i,0,h)cin>>g[i];
int res=0;
rep(j,0,w){
int sub=0;
rep(i,0,h)if(g[i][j]=='o')sub=(sub+mpow(2,i,3))%3;
res^=sub;
}
if(res)puts("First");
else puts("Second");
// int g[21]={};
// rep(x,1,15){
// set<int> st;
// rep(d,0,6)if(x-(1<<d)>=0)st.insert(g[x-(1<<d)]);
// rep(G,0,st.size()+1)if(!st.count(G)){
// g[x]=G;
// break;
// }
// cout<<g[x]<<'\n';
// }
return 0;
}
tko919