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
RE × 3
RE × 16
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