Submission #1966178
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 var sArr = S.Select(c => c.ToString()).ToArray(); var sw = new string[] { "S", "W" }; var ring = new string[0]; Func<string, string> rev = (a) => a == "S" ? "W" : "S"; Func<int, bool> isHonest = (index) => ring[index] == "S"; Func<int, bool> isSaySame = (index) => sArr[index] == "o"; Action<int> setSame = (index) => ring[index + 1] = ring[index - 1]; Action<int> setDiff = (index) => ring[index + 1] = rev(ring[index - 1]); Func<bool> isOK1 = () => ring[N - 2] == ring[0]; Func<bool> isOK2 = () => ring[N - 1] == ring[1]; Func<bool> isValid = () => { var f1 = false; var f2 = false; if (isHonest(N - 1)) if (isSaySame(N - 1)) f1= isOK1(); else f1= !isOK1(); else if (isSaySame(N - 1)) f1=!isOK1(); else f1= isOK1(); if (isHonest(0)) if (isSaySame(0)) f2 = isOK2(); else f2 = !isOK2(); else if (isSaySame(0)) f2 = !isOK2(); else f2 = isOK2(); return f1 && f2; }; for (int n0 = 0; n0 < sw.Length; ++n0) { for (int n1 = 0; n1 < sw.Length; ++n1) { ring = new string[N]; ring[0] = sw[n0]; ring[1] = sw[n1]; for (int i = 1; i < N - 1; ++i) { if (isHonest(i)) if (isSaySame(i)) setSame(i); else setDiff(i); else if (isSaySame(i)) setDiff(i); else setSame(i); } if (isValid()) { //ret Console.WriteLine(string.Join("", ring)); return; } } } //ret 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 | 3888 Byte |
Status | RE |
Exec Time | 23 ms |
Memory | 12768 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 | RE | 22 ms | 8672 KB |
00_example_02.txt | RE | 22 ms | 10720 KB |
00_example_03.txt | RE | 22 ms | 10720 KB |
01.txt | RE | 22 ms | 10720 KB |
02.txt | RE | 22 ms | 8672 KB |
03.txt | RE | 22 ms | 8672 KB |
04.txt | RE | 22 ms | 10720 KB |
05.txt | RE | 23 ms | 10720 KB |
06.txt | RE | 22 ms | 10720 KB |
07.txt | RE | 23 ms | 10720 KB |
08.txt | RE | 22 ms | 10720 KB |
09.txt | RE | 22 ms | 8672 KB |
10.txt | RE | 23 ms | 10720 KB |
11.txt | RE | 23 ms | 12768 KB |
12.txt | RE | 23 ms | 10720 KB |
13.txt | RE | 22 ms | 8672 KB |