久々のARC参加。
今回はDが簡単だったようで、自分もなんとか解けた。
あいにくCでしょうもないWAを連発したため順位は微妙。
WAペナルティが少なかったので助かった。
今回はC以外はいつもより難易度控えめだね。
http://arc014.contest.atcoder.jp/tasks/arc014_1
http://arc014.contest.atcoder.jp/tasks/arc014_2
A - 君が望むなら世界中全てのたこ焼きを赤と青に染め上げよう
1列のたこ焼きが赤・青の順で塗られている。N番目のたこ焼きの色を答える。
2でmodを取るだけ。
void solve() { _P("%s\n",(GETi()%2)?"Red":"Blue"); return; }
B - あの日したしりとりの結果を僕達はまだ知らない。
アルファベットからなる単語でしりとりをしている。
しりとりのルールに則らない、すなわち以下のいずれかに違反すると負けである。
- 先頭の文字が、前の単語の末尾の文字と一致しない
- 前に出てきた単語を使う
しりとりの単語群が与えられるので、先手の勝敗を答える。
題意に沿ってやればよい。
「前に出てきた単語」はsetとか使えばよかったけど、単語数が少ないので律儀に比較した。
int N; string W[101]; void solve() { int f,r,i,j,k,l; int bad[2]; N=GETi(); FOR(i,N) cin>>W[i]; bad[0]=1000; bad[1]=1000; for(i=1;i<N;i++) { if(W[i][0]!=W[i-1][W[i-1].length()-1]) bad[i%2]=min(bad[i%2],i); FOR(j,i) { if(W[j]==W[i]) bad[i%2]=min(bad[i%2],i); } } if(bad[0]<bad[1]) _P("LOSE\n"); else if(bad[0]>bad[1]) _P("WIN\n"); else _P("DRAW\n"); return; }
まとめ
Aは過去でも一番簡単?
Bは文字列数と間違えてWの配列要素数をミスした。しょうもない…。