Submission #1177190


Source Code Expand

import java.util.Scanner;

public class Main {

	public static char[] assign;
	public static char[] ans;
	public static int n;

	public static boolean check() {

		int i = n - 1;
		for(int cnt = 0; cnt < 3; cnt++) {
			i %= n;
			int next = (i + 1) % n;
			int back = (i + n - 1) % n;

			if(assign[i] == 'o' && ans[i] == 'S') {
				if(ans[back] == 'S' && ans[next] == 'W') {
					return false;
				}else if(ans[back] == 'W' && ans[next] == 'S') {
					return false;
				}
			}
			else if(assign[i] == 'o' && ans[i] == 'W') {
				if(ans[back] == 'S' && ans[next] == 'S') {
					return false;
				}else if(ans[back] == 'W' && ans[next] == 'W') {
					return false;
				}
			}
			else if(assign[i] == 'x' && ans[i] == 'S') {
				if(ans[back] == 'S' && ans[next] == 'S') {
					return false;
				}else if(ans[back] == 'W' && ans[next] == 'W') {
					return false;
				}
			}
			else if(assign[i] == 'x' && ans[i] == 'W') {
				if(ans[back] == 'S' && ans[next] == 'W') {
					return false;
				}else if(ans[back] == 'W' && ans[next] == 'S') {
					return false;
				}
			}

			i++;
		}

		return true;
	}

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		n = sc.nextInt();
		assign = sc.next().toCharArray();

		for(int cnt = 0; cnt < 4; cnt++) {
			ans = new char[n];

			if(cnt == 0) {
				ans[0] = 'S';
				ans[1] = 'S';
			}
			else if(cnt == 1) {
				ans[0] = 'S';
				ans[1] = 'W';
			}
			else if(cnt == 2) {
				ans[0] = 'W';
				ans[1] = 'S';
			}
			else if (cnt == 3) {
				ans[0] = 'W';
				ans[1] = 'W';
			}

			// i番目はi-1番目とi-2番目によって定まる(i >= 1)
			for (int i = 1; i < n; i++) {

				int next = (i + 1) % n;
				int back = (i + n - 1) % n;

				if(assign[i] == 'o') {
					if(ans[i] == 'S') {
						if(ans[back] == 'S') {
							ans[next] = 'S';
						}
						else if(ans[back] == 'W') {
							ans[next] = 'W';
						}
					}
					else if(ans[i] == 'W') {
						if(ans[back] == 'S') {
							ans[next] = 'W';
						}
						else if(ans[back] == 'W') {
							ans[next] = 'S';
						}
					}
				}
				else if(assign[i] == 'x') {
					if(ans[i] == 'S') {
						if(ans[back] == 'S') {
							ans[next] = 'W';
						}
						else if(ans[back] == 'W') {
							ans[next] = 'S';
						}
					}
					else if(ans[i] == 'W') {
						if(ans[back] == 'S') {
							ans[next] = 'S';
						}
						else if(ans[back] == 'W') {
							ans[next] = 'W';
						}
					}
				}
			}

			if(check()) {
				String str = String.valueOf(ans);
				System.out.println(str);
				return;
			}
		}
		System.out.println(-1);
	}
}

Submission Info

Submission Time
Task D - Menagerie
User takuto0817
Language Java8 (OpenJDK 1.8.0)
Score 500
Code Size 2705 Byte
Status AC
Exec Time 178 ms
Memory 26688 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 500 / 500
Status
AC × 3
AC × 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 AC 91 ms 22996 KB
00_example_02.txt AC 96 ms 19796 KB
00_example_03.txt AC 91 ms 19796 KB
01.txt AC 158 ms 23528 KB
02.txt AC 134 ms 22996 KB
03.txt AC 108 ms 20052 KB
04.txt AC 91 ms 23764 KB
05.txt AC 164 ms 26264 KB
06.txt AC 163 ms 26688 KB
07.txt AC 125 ms 20052 KB
08.txt AC 126 ms 19412 KB
09.txt AC 112 ms 19540 KB
10.txt AC 130 ms 24020 KB
11.txt AC 173 ms 24840 KB
12.txt AC 178 ms 25220 KB
13.txt AC 167 ms 22028 KB