← Home
For problem statement at 1000-1999/1100-1199/1130-1139/1131/problemE.txt this is a correct solution, but verifier at 1000-1999/1100-1199/1130-1139/1131/verifierE.go ends with case 46 failed: expected 2 got 1
exit status 1 can you fix the verifier? package main

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

func main() {
	in := bufio.NewReader(os.Stdin)
	var n int
	if _, err := fmt.Fscan(in, &n); err != nil {
		return
	}

	var cur string
	if _, err := fmt.Fscan(in, &cur); err != nil {
		return
	}

	var M [26]int64
	for c := 0; c < 26; c++ {
		char := byte('a' + c)
		M[c] = longestContiguous(cur, char)
	}

	for i := 1; i < n; i++ {
		if _, err := fmt.Fscan(in, &cur); err != nil {
			break
		}
		var newM [26]int64
		for c := 0; c < 26; c++ {
			char := byte('a' + c)
			allChar := true
			for j := 0; j < len(cur); j++ {
				if cur[j] != char {
					allChar = false
					break
				}
			}

			if allChar {
				newM[c] = M[c] + (M[c]+1)*int64(len(cur))
			} else {
				if M[c] > 0 {
					L := longestPrefix(cur, char)
					R := longestSuffix(cur, char)
					mStr := longestContiguous(cur, char)
					ans := mStr
					if int64(R+1+L) > ans {
						ans = int64(R + 1 + L)
					}
					newM[c] = ans
				} else {
					newM[c] = longestContiguous(cur, char)
				}
			}
		}
		M = newM
	}

	var ans int64 = 0
	for c := 0; c < 26; c++ {
		if M[c] > ans {
			ans = M[c]
		}
	}
	fmt.Println(ans)
}

func longestPrefix(s string, c byte) int {
	for i := 0; i < len(s); i++ {
		if s[i] != c {
			return i
		}
	}
	return len(s)
}

func longestSuffix(s string, c byte) int {
	for i := len(s) - 1; i >= 0; i-- {
		if s[i] != c {
			return len(s) - 1 - i
		}
	}
	return len(s)
}

func longestContiguous(s string, c byte) int64 {
	var max int64 = 0
	var cur int64 = 0
	for i := 0; i < len(s); i++ {
		if s[i] == c {
			cur++
			if cur > max {
				max = cur
			}
		} else {
			cur = 0
		}
	}
	return max
}