Problem:


Score : 500 points

Problem Statement

Snuke, who loves animals, built a zoo.

There are N animals in this zoo. They are conveniently numbered 1 through N, and arranged in a circle.
The animal numbered i (2≤i≤N-1) is adjacent to the animals numbered i-1 and i+1. Also, the animal numbered 1 is adjacent to the animals numbered 2 and N, and the animal numbered N is adjacent to the animals numbered N-1 and 1.

There are two kinds of animals in this zoo: honest sheep that only speak the truth, and lying wolves that only tell lies.

Snuke cannot tell the difference between these two species, and asked each animal the following question: "Are your neighbors of the same species?" The animal numbered i answered s_i. Here, if s_i is o, the animal said that the two neighboring animals are of the same species, and if s_i is x, the animal said that the two neighboring animals are of different species.

More formally, a sheep answered o if the two neighboring animals are both sheep or both wolves, and answered x otherwise.
Similarly, a wolf answered x if the two neighboring animals are both sheep or both wolves, and answered o otherwise.

Snuke is wondering whether there is a valid assignment of species to the animals that is consistent with these responses. If there is such an assignment, show one such assignment. Otherwise, print -1.

Constraints

3 ≤ N ≤ 10^{5}

s is a string of length N consisting of o and x.

Input

The input is given from Standard Input in the following format:

N
s

Output

If there does not exist an valid assignment that is consistent with s, print -1.
Otherwise, print an string t in the following format. The output is considered correct if the assignment described by t is consistent with s.

t is a string of length N consisting of S and W.

If t_i is S, it indicates that the animal numbered i is a sheep. If t_i is W, it indicates that the animal numbered i is a wolf.

Sample Input 1

6
ooxoox

Sample Output 1

SSSWWS

For example, if the animals numbered 1, 2, 3, 4, 5 and 6 are respectively a sheep, sheep, sheep, wolf, wolf, and sheep, it is consistent with their responses. Besides, there is another valid assignment of species: a wolf, sheep, wolf, sheep, wolf and wolf.

Let us remind you: if the neiboring animals are of the same species, a sheep answers o and a wolf answers x. If the neiboring animals are of different species, a sheep answers x and a wolf answers o.

Sample Input 2

3
oox

Sample Output 2

-1

Print -1 if there is no valid assignment of species.

Sample Input 3

10
oxooxoxoox

Sample Output 3

SSWWSSSWWS



Sample input:
6
ooxoox


Sample output:
SSSWWS

Submission status: Runtime Error

Solution code:
n=int(input())
s=input()
flag=True
lists=["WWW","SWS","WSS","SSW","SWW","WWS","SSS","WSW"]
strings=""
if s[0]=="x":
    j==0
    while j<4:
        strings+=lists[j]
        for i in range(n-1):
            if strings[-2]=="W" and strings[-1]=="W" and s[i+1]=="o":
                strings+="S"
            elif strings[-2]=="W" and strings[-1]=="W" and s[i+1]=="x": 
                strings+="W"   
            elif strings[-2]=="W" and strings[-1]=="S" and s[i+1]=="o":
                strings=""
                break
            elif strings[-2]=="W" and strings[-1]=="S" and s[i+1]=="x":
                strings+="S"   
            elif strings[-2]=="S" and strings[-1]=="S" and s[i+1]=="o":
                strings+="S"           
            elif strings[-2]=="S" and strings[-1]=="S" and s[i+1]=="x": 
                strings+="W"
            elif strings[-2]=="S" and strings[-1]=="W" and s[i+1]=="o":
                strings+="W"
            elif strings[-2]=="S" and strings[-1]=="W" and s[i+1]=="x":    
                strings+="S"

        if len(strings)==n+2 and strings[0]==strings[-2] and strings[1]==strings[-1]:
            flag=False
            print(strings[1:-1])
            strings=""
            break  
        else:
            strings=""
            j+=1
elif s[0]=="o":
    j==4
    while j<8:
        strings=lists[j]
        for i in range(n-1):
            if strings[-2]=="W" and strings[-1]=="W" and s[i+1]=="o":
                strings+="S"
            elif strings[-2]=="W" and strings[-1]=="W" and s[i+1]=="x": 
                strings+="W" 
            elif strings[-2]=="W" and strings[-1]=="S" and s[i+1]=="o":
                strings=""
                break
            elif strings[-2]=="W" and strings[-1]=="S" and s[i+1]=="x":
                strings+="S"
            elif strings[-2]=="S" and strings[-1]=="S" and s[i+1]=="o":
                strings+="S"
            elif strings[-2]=="S" and strings[-1]=="S" and s[i+1]=="x": 
                strings+="W"  
            elif strings[-2]=="S" and strings[-1]=="W" and s[i+1]=="o":
                strings+="W"
            elif strings[-2]=="S" and strings[-1]=="W" and s[i+1]=="x":    
                strings+="S"
        if  len(strings)==n+2 and strings[0]==strings[-2] and strings[1]==strings[-1]:
            flag=False
            print(strings[1:-1])
            strings=""
            break
        else:
            strings=""
            j+=1    
if flag==True:
    print("-1")

Submission status: Runtime Error

Solution code:
n=int(input())
s=input()
flag=True
lists=["WWW","SWS","WSS","SSW","SWW","WWS","SSS","WSW"]
strings=""
if s[0]=="x":
    j==0
    while j<4:
        strings+=lists[j]
        for i in range(n-1):
            if strings[-2]=="W" and strings[-1]=="W" and s[i+1]=="o":
                strings+="S"
            elif strings[-2]=="W" and strings[-1]=="W" and s[i+1]=="x": 
                strings+="W"   
            elif strings[-2]=="W" and strings[-1]=="S" and s[i+1]=="o":
                strings=""
                break
            elif strings[-2]=="W" and strings[-1]=="S" and s[i+1]=="x":
                strings+="S"   
            elif strings[-2]=="S" and strings[-1]=="S" and s[i+1]=="o":
                strings+="S"           
            elif strings[-2]=="S" and strings[-1]=="S" and s[i+1]=="x": 
                strings+="W"
            elif strings[-2]=="S" and strings[-1]=="W" and s[i+1]=="o":
                strings+="W"
            elif strings[-2]=="S" and strings[-1]=="W" and s[i+1]=="x":    
                strings+="S"

        if len(strings)==n+2 and strings[0]==strings[-2] and strings[1]==strings[-1]:
            flag=False
            print(strings[1:-1])
            strings=""
            break  
        else:
            j+=1
elif s[0]=="o":
    j==4
    while j<8:
        strings=lists[j]
        for i in range(n-1):
            if strings[-2]=="W" and strings[-1]=="W" and s[i+1]=="o":
                strings+="S"
            elif strings[-2]=="W" and strings[-1]=="W" and s[i+1]=="x": 
                strings+="W" 
            elif strings[-2]=="W" and strings[-1]=="S" and s[i+1]=="o":
                strings=""
                break
            elif strings[-2]=="W" and strings[-1]=="S" and s[i+1]=="x":
                strings+="S"
            elif strings[-2]=="S" and strings[-1]=="S" and s[i+1]=="o":
                strings+="S"
            elif strings[-2]=="S" and strings[-1]=="S" and s[i+1]=="x": 
                strings+="W"  
            elif strings[-2]=="S" and strings[-1]=="W" and s[i+1]=="o":
                strings+="W"
            elif strings[-2]=="S" and strings[-1]=="W" and s[i+1]=="x":    
                strings+="S"

        if  len(strings)==n+2 and strings[0]==strings[-2] and strings[1]==strings[-1]:
            flag=False
            print(strings[1:-1])
            strings=""
            break
        else:
            j+=1
            
if flag==True:
    print("-1")

Submission status: Runtime Error

Solution code:
N = int(input())
s = input()
ans = ""
def solve(n, S):
    global N,s,ans
    if n<1:
        solve(n+1, S+"S")
        solve(n+1, S+"W")
    elif n<N-1:
        if S[n]=="S":
            if s[n]=="o": solve(n+1, S+S[n-1])
            elif S[n-1]=="S": solve(n+1, S+"W")
            else: solve(n+1, S+"S")
        else:
            if s[n]=="x": solve(n+1, S+S[n-1])
            elif S[n-1]=="S": solve(n+1, S+"W")
            else: solve(n+1, S+"S")
    else:
        if S[n]=="S" and s[n]=="o" and S[n-1]=="W" and S[0]=="W":
            ans = S
        elif S[n]=="S" and s[n]=="o" and S[n-1]=="S" and S[0]=="S":
            ans = S
        elif S[n]=="S" and s[n]=="x" and S[n-1]=="S" and S[0]=="W":
            ans = S
        elif S[n]=="S" and s[n]=="x" and S[n-1]=="W" and S[0]=="S":
            ans = S
        elif S[n]=="W" and s[n]=="o" and S[n-1]=="W" and S[0]=="S":
            ans = S
        elif S[n]=="W" and s[n]=="o" and S[n-1]=="S" and S[0]=="W":
            ans = S
        elif S[n]=="W" and s[n]=="x" and S[n-1]=="S" and S[0]=="S":
            ans = S
        elif S[n]=="W" and s[n]=="x" and S[n-1]=="W" and S[0]=="W":
            ans = S
        return
solve(-1, "")
print(ans if len(ans)!=0 else -1)

Submission status: Runtime Error

Solution code:
def main():
    N = int(input())
    s = input()
    # c = ["WS", "SW", "SS", "WW"]
    c = ["SW", "WS", "SS", "WW"]
    ok = False
    for tmp in c:
        ans = tmp
        if 
        for i in range(1, N):
            if s[i] == "o":# oの時
                if ans[i-1] == "S" and ans[i] == "S":
                    ans += "S"
                elif ans[i-1] == "W" and ans[i] == "S":
                    ans += "W"
                elif ans[i-1] == "S" and ans[i] == "W":
                    ans += "W"
                elif ans[i-1] == "W" and ans[i] == "W":
                    ans += "S"
            else:# xの時
                if ans[i-1] == "S" and ans[i] == "S":
                    ans += "W"
                elif ans[i-1] == "W" and ans[i] == "S":
                    ans += "S"
                elif ans[i-1] == "S" and ans[i] == "W":
                    ans += "S"
                elif ans[i-1] == "W" and ans[i] == "W":
                    ans += "W"
    
        if ans[0] == ans[-1]:
            if ans[0] == "S":
                if s[0] == "o":
                    if (ans[-2] == "S" and ans[1] == "S") or (ans[-2] == "W" and ans[1] == "W"):
                        ok = True
                else:
                    if (ans[-2] == "S" and ans[1] == "W") or (ans[-2] == "W" and ans[1] == "S"):
                        ok = True
            else:
                if s[0] == "o":
                    if (ans[-2] == "S" and ans[1] == "W") or (ans[-2] == "W" and ans[1] == "S"):
                        ok = True
                else:
                    if (ans[-2] == "S" and ans[1] == "S") or (ans[-2] == "W" and ans[1] == "W"):
                        ok = True
        if ok:
            print(ans[:-1])
            # print(len(ans))
            break
    if not ok:
        print(-1)

if __name__ == "__main__":
    main()

Submission status: Runtime Error

Solution code:
# ARC069D - Menagerie (ABC055D)
def check(a: int, b: int) -> list:
    ret, cur, prev = [], a, b
    for i in S:
        ret += [cur]
        if cur ^ (i == "o"):  # oSo or oWx
            prev, cur = cur, prev ^ 1  # both neighbors are different
        else:  # oSx or oWo
            prev, cur = cur, prev  # both are the same
    flg = cur == a and prev == b  # check the consistency of input and result
    return ret if flg else []


def main():
    global S
    N = int(input())
    S = input().rstrip()
    for a in range(2):
        for b in range(2):
            x = check(a, b)
            if x:
                ans = "".join("S" if i else "W" for i in ans)
                print(ans)
                return
    print(-1)


if __name__ == "__main__":
    main()

Submission status: Runtime Error

Solution code:
a = int(input())
b = input()

t = ["SS","SW","WS","WW"]

for j in range(4):
  for i in range(1,a):
    if t[j][i] == "S" and b[i] == "o":
      t[j]+="S" if t[j][i-1] == "S" else "W"
    elif t[j][i] == "S" and b[i] == "x":
      t[j]+="S" if t[j][i-1] == "W" else "W"
    elif t[j][i] == "W" and b[i] == "x":
      t[j]+="S" if t[j][i-1] == "S" else "W"
    elif t[j][i] == "W" and b[i] == "o":
      t[j]+="S" if t[j][i-1] == "W" else "W"
    else:
      t[j] = -1
      break
s = -1
if all(i == -1 f

Submission status: Runtime Error

Solution code:
#!/usr/bin/env python3

def main():
    n = int(input())
    s = input()
    for d0 in ["S", "W"]:
        for d1 in ["S", "W"]:
            pat = wrap(n, s, d0, d1)
            if pat[0] == pat[n] and pat[1] == pat[n + 1]:
                res = "".join(pat[:n])
                print(res)
                return
    print("-1")

def wrap(n, s, d0, d1):
    ds = [d0, d1]
    for i in range(2, n + 2):
        d = get_dnext(ds[i - 2], ds[i - 1], s[i - 1])
        ds.append(d)
    assert len(ds) == n + 2
    return ds

def get_dnext(dpre, di, si):
    if di == "S" and si == "o":
        dnext = dpre
    elif di == "S" and si == "x":
        dnext = inv(dpre)
    elif di == "W" and si == "o":
        dnext = inv(dpre)
    elif di == "W" and si == "x":
        dnext = dpre
    else:
        raise Exception
    return dnext

def inv(d):
    return "W" if d == "S" else "S"

main()

Submission status: Runtime Error

Solution code:
#include <cstdio>

constexpr int MAX_N = 100100;

using namespace std;

int n;
char arr[MAX_N];

char opt[4][MAX_N];

int main() {
    scanf(" %d", &n);
    for (int i = 0; i < n; i++) {
        scanf(" %c", &arr[i]);
    }

    opt[0][0] = 'S';
    opt[0][1] = 'S';
    opt[1][0] = 'S';
    opt[1][1] = 'W';
    opt[2][0] = 'W';
    opt[2][1] = 'S';
    opt[3][0] = 'W';
    opt[3][1] = 'W';

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < 4; j++) {
            if (opt[j][i] == 'S' && opt[j][i + 1] == 'S') {
                if (arr[i] == 'o') {
                    opt[j][i + 2] = 'S';
                } else {
                    opt[j][i + 2] = 'W';
                }
            } else if (opt[j][i] == 'S' && opt[j][i + 1] == 'W') {
                if (arr[i] == 'o') {
                    opt[j][i + 2] = 'W';
                } else {
                    opt[j][i + 2] = 'S';
                }
            } else if (opt[j][i] == 'W' && opt[j][i + 1] == 'S') {
                if (arr[i] == 'o') {
                    opt[j][i + 2] = 'W';
                } else {
                    opt[j][i + 2] = 'S';
                }
            } else {
                if (arr[i] == 'o') {
                    opt[j][i + 2] = 'S';
                } else {
                    opt[j][i + 2] = 'W';
                }
            }
        }
    }

    int which = -1;

    for (int i = 0; i < 4; i++) {
        if (opt[i][0] == opt[i][n] && opt[i][1] == opt[i][n + 1]) {
            which = i;
            break;
        }
    }

    if (which == -1) {
        printf("-1\n");
    } else {
        for (int i = 1; i <= n; i++) {
            printf("%c", opt[which][i]);
        }
        printf("\n");
    }

    return 0;
}

Submission status: Runtime Error

Solution code:
try:
    while True:  
        n = raw_input().strip().upper()
        oxList = raw_input().strip().lower()
        ans = -1
        for s0 in ["S", "W"]:
            for s1 in ["S","W"]:
                swList = [0]*int(n)
                swList[0] = s0
                swList[1] = s1
                for i in range(2, int(n)):
                    nextAnimal = findNextAnimal(oxList, swList, i-1)
                    swList[i] = nextAnimal
                    flag = checkList(oxList, swList)
                    if(flag == 1):
                        ans = ""
                        for s in swList:
                            ans += s
        print ans
                        
except EOFError:
    pass

Submission status: Runtime Error

Solution code:
N = int(input())
s_in = input()

ans = 'S'*N
ind = 0
for s in s_in:
    if ind>0:
        # print(ans)
        # print(s_in)
        if s_in[ind-1]=='x':
            ans = ans[0:ind]+'W'+ans[ind+1:len(ans)]
            if s_in[ind-1]=='o':
                s_in = s_in[0:(ind-1)]+'x'+s_in[ind:len(s_in)]
            elif s_in[ind-1]=='x':
                s_in = s_in[0:(ind-1)]+'o'+s_in[ind:len(s_in)]
            if s_in[ind]=='o':
                s_in = s_in[0:ind]+'x'+s_in[ind+1:len(s_in)]
            elif s_in[ind]=='x':
                s_in = s_in[0:ind]+'o'+s_in[ind+1:len(s_in)]
            if s_in[ind+1]=='o':
                s_in = s_in[0:ind+1]+'x'+s_in[ind+2:len(s_in)]
            elif s_in[ind+1]=='x':
                s_in = s_in[0:ind+1]+'o'+s_in[ind+2:len(s_in)]

    # print(s_in[ind])
    ind += 1

if s_in.count('x')>0:
    print('-1')
else:
    print(ans)