← Home
For problem statement at 1000-1999/1000-1099/1090-1099/1092/problemC.txt this is a correct solution, but verifier at 1000-1999/1000-1099/1090-1099/1092/verifierC.go ends with case 5 failed: expected SP got PS

exit status 1 can you fix the verifier? package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	scanner := bufio.NewScanner(os.Stdin)
	scanner.Split(bufio.ScanWords)
	if !scanner.Scan() {
		return
	}
	var n int
	fmt.Sscanf(scanner.Text(), "%d", &n)

	strs := make([]string, 2*n-2)
	var l1, l2 string
	for i := 0; i < 2*n-2; i++ {
		scanner.Scan()
		strs[i] = scanner.Text()
		if len(strs[i]) == n-1 {
			if l1 == "" {
				l1 = strs[i]
			} else {
				l2 = strs[i]
			}
		}
	}

	cand1 := l1 + string(l2[n-2])
	cand2 := l2 + string(l1[n-2])

	if check(cand1, n, strs) {
		return
	}
	check(cand2, n, strs)
}

func check(s string, n int, strs []string) bool {
	usedP := make([]bool, n)
	ans := make([]byte, 2*n-2)
	for i, str := range strs {
		l := len(str)
		isP := s[:l] == str
		isS := s[n-l:] == str

		if isP && !usedP[l] {
			ans[i] = 'P'
			usedP[l] = true
		} else if isS {
			ans[i] = 'S'
		} else {
			return false
		}
	}
	fmt.Println(string(ans))
	return true
}