C++の練習を兼ねて, AtCoder Regular Contest 014 の 問題A (A – 君が望むなら世界中全てのたこ焼きを赤と青に染め上げよう) ~ 問題B (B – あの日したしりとりの結果を僕達はまだ知らない。) を解いてみた.
■感想.
1. 問題A は、与えられた数字の偶奇で, 分岐する方針で, AC版となった.
2. 問題Bは, 実装に, やや苦戦したものの, AC版となった.
3. 時間を見つけて, 引き続き, 過去問を振り返っていきたいと思う.
■C++版プログラム(問題A/AC版).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#include <bits/stdc++.h> using namespace std; int main(){ // 1. 入力情報. int N; scanf("%d", &N); // 2. 出力. printf("%s\n", (N & 1) ? "Red" : "Blue"); return 0; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
[入力例] 4 [出力例] Blue ※AtCoderのテストケースより [入力例] 9 [出力例] Red ※AtCoderのテストケースより [入力例] 13 [出力例] Red ※AtCoderのテストケースより |
■C++版プログラム(問題B/AC版).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
#include <bits/stdc++.h> using namespace std; #define repex(i, a, b, c) for(int i = a; i < b; i += c) #define repx(i, a, b) repex(i, a, b, 1) #define rep(i, n) repx(i, 0, n) #define repr(i, a, b) for(int i = a; i >= b; i--) int main(){ // 1. 入力情報. int N; scanf("%d", &N); // 2. しりとりを行う. map<string, int> m; int index = -1; string bef = "#"; rep(i, N){ // 今回分保存. char c[33]; scanf("%s", c); string cur(c); // 前回以前に, すでに出現しているか確認. if(m.count(cur)){ index = i + 1; break; }else{ m[cur]++; } // 前回の単語の末尾と, 今回の単語の先頭を比較. if(bef != "#" && bef.back() != cur.front()){ index = i + 1; break; } // 前回分保存. bef = cur; } // 3. 勝敗判定. string ans = "DRAW"; if(index > 0) ans = (index & 1) ? "LOSE" : "WIN"; // 4. 出力. printf("%s\n", ans.c_str()); return 0; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
[入力例] 4 ab ba ab cb [出力例] LOSE ※AtCoderのテストケースより [入力例] 3 atcoder redcoder recorder [出力例] DRAW ※AtCoderのテストケースより [入力例] 5 test tree examination pass stack [出力例] WIN [入力例] 5 sine logarithm cosine hyperbolic cotangent [出力例] WIN [入力例] 28 stack kind direction negative edge efficient third dynamic cosine end decode extra algebra algorithm map pop programming graph hash head deque enqueue euler route erase equation not tuple [出力例] DRAW |
■参照サイト
AtCoder Regular Contest 014