Submission #1966082
Source Code Expand
using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Linq.Expressions; using System.Runtime.InteropServices; using System.Runtime.Remoting.Messaging; using System.Security.Principal; using System.Text; class Simple { int N; string S; void Solve() { //input N = io.Int; S = io.String; //cal bool ans = false; var ring = new string[N]; Func<string, string> rev = (str) => str == "S" ? "W" : "S"; Func<string, bool> isHonest = (str) => str == "S"; Func<char, bool> isSame = (cha) => cha == 'o'; Action<string> initSame = (str) => ring[1] = ring[N - 1] = str; Action<string> initDiff = (str) => ring[1] = rev(ring[N - 1] = str); Action<string> initDiff2 = (str) => ring[N-1] = rev(ring[1] = str); Action<int, string> same = (index, str) => ring[index + 1] = ring[index - 1]; Action<int, string> diff = (index, str) => ring[index + 1] = rev(ring[index - 1]); Action f = () => { for (int i = 1; i < N - 1; ++i) { if (isHonest(ring[i])) { if (isSame(S[i])) { same(i, ring[i]); } else { diff(i, ring[i]); } } else { if (isSame(S[i])) { diff(i, ring[i]); } else { same(i, ring[i]); } } } }; Func<bool> finIsSame = () => ring[N - 2] == ring[0]; Func<bool> finIsDiff = () => !finIsSame(); Func<bool> isValid = () => { if (isHonest(ring[N - 1])) { if (isSame(S[N - 1])) { return finIsSame(); } else { return finIsDiff(); } } else { if (isSame(S[N - 1])) { return finIsDiff(); } else { return finIsSame(); } } }; //羊1スタート //初回 ring[0] = "S"; if (isSame(S[0])) { initSame(ring[0]); } else { initDiff(ring[0]); } //中間 f(); //最終チェック if (isValid()) { ans = true; //ansArr = ring.Clone() as string[]; goto RET; } //羊2スタート //初回 ring[0] = "S"; if (isSame(S[0])) { initSame(ring[0]); } else { initDiff2(ring[0]); } //中間 f(); //最終チェック if (isValid()) { ans = true; //ansArr = ring.Clone() as string[]; goto RET; } //狼1スタート //初回 ring = new string[N]; ring[0] = "W"; if (isSame(S[0])) { initDiff(ring[0]); } else { initSame(ring[0]); } //中間 f(); //最終チェック if (isValid()) { ans = true; //ansArr = ring.Clone() as string[]; goto RET; } //狼2スタート //初回 ring = new string[N]; ring[0] = "W"; if (isSame(S[0])) { initDiff2(ring[0]); } else { initSame(ring[0]); } //中間 f(); //最終チェック if (isValid()) { ans = true; //ansArr = ring.Clone() as string[]; goto RET; } RET: //ret if (ans) { for (int i = 0; i < N; ++i) { Console.Write(ring[i]); } Console.WriteLine(""); } else { Console.WriteLine(-1); } } SimpleIO io = new SimpleIO(); public static void Main(string[] args) => new Simple().Stream(); void Stream() { //var exStdIn = new System.IO.StreamReader("stdin.txt"); //System.Console.SetIn(exStdIn); Solve(); io.writeFlush(); } } class SimpleIO { string[] nextBuffer; int BufferCnt; char[] cs = new char[] { ' ' }; StreamWriter sw = new StreamWriter(Console.OpenStandardOutput()) { AutoFlush = false }; public SimpleIO() { nextBuffer = new string[0]; BufferCnt = 0; Console.SetOut(sw); } public string Next() { if (BufferCnt < nextBuffer.Length) return nextBuffer[BufferCnt++]; string st = Console.ReadLine(); while (st == "") st = Console.ReadLine(); nextBuffer = st.Split(cs, StringSplitOptions.RemoveEmptyEntries); BufferCnt = 0; return nextBuffer[BufferCnt++]; } public string String => Next(); public char Char => char.Parse(String); public int Int => int.Parse(String); public long Long => long.Parse(String); public double Double => double.Parse(String); public void writeFlush() { Console.Out.Flush(); } }
Submission Info
Submission Time | |
---|---|
Task | D - Menagerie |
User | rui0422 |
Language | C# (Mono 4.6.2.0) |
Score | 0 |
Code Size | 5373 Byte |
Status | WA |
Exec Time | 37 ms |
Memory | 14688 KB |
Judge Result
Set Name | Sample | All | ||||||
---|---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 0 / 500 | ||||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | 00_example_01.txt, 00_example_02.txt, 00_example_03.txt |
All | 00_example_01.txt, 00_example_02.txt, 00_example_03.txt, 01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
00_example_01.txt | AC | 21 ms | 9172 KB |
00_example_02.txt | AC | 22 ms | 11220 KB |
00_example_03.txt | AC | 21 ms | 9172 KB |
01.txt | AC | 31 ms | 10592 KB |
02.txt | AC | 25 ms | 9696 KB |
03.txt | AC | 22 ms | 9220 KB |
04.txt | WA | 22 ms | 9172 KB |
05.txt | AC | 35 ms | 11232 KB |
06.txt | AC | 31 ms | 12512 KB |
07.txt | WA | 23 ms | 11232 KB |
08.txt | AC | 23 ms | 11360 KB |
09.txt | AC | 22 ms | 9224 KB |
10.txt | WA | 23 ms | 11360 KB |
11.txt | WA | 30 ms | 14688 KB |
12.txt | WA | 30 ms | 10592 KB |
13.txt | AC | 37 ms | 13536 KB |