For problem statement at 0-999/800-899/870-879/878/problemB.txt this is a correct solution, but verifier at 0-999/800-899/870-879/878/verifierB.go ends with All tests passed can you fix the verifier? package main
import (
"bufio"
"fmt"
"os"
"strconv"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Split(bufio.ScanWords)
if !scanner.Scan() {
return
}
n, _ := strconv.ParseInt(scanner.Text(), 10, 64)
scanner.Scan()
k, _ := strconv.ParseInt(scanner.Text(), 10, 64)
scanner.Scan()
m, _ := strconv.ParseInt(scanner.Text(), 10, 64)
type Block struct {
val int64
count int64
}
var S []Block
for i := int64(0); i < n; i++ {
scanner.Scan()
v, _ := strconv.ParseInt(scanner.Text(), 10, 64)
if len(S) > 0 && S[len(S)-1].val == v {
S[len(S)-1].count++
if S[len(S)-1].count == k {
S = S[:len(S)-1]
}
} else {
S = append(S, Block{val: v, count: 1})
}
}
if len(S) == 0 {
fmt.Println(0)
return
}
L := int64(0)
for _, b := range S {
L += b.count
}
i := 0
j := len(S) - 1
for i < j && S[i].val == S[j].val && (S[i].count+S[j].count)%k == 0 {
i++
j--
}
if i == j {
rem := (m * S[i].count) % k
if rem == 0 {
fmt.Println(0)
} else {
ans := int64(0)
for t := 0; t < i; t++ {
ans += S[t].count
}
for t := j + 1; t < len(S); t++ {
ans += S[t].count
}
ans += rem
fmt.Println(ans)
}
} else {
remPerBoundary := int64(0)
for t := 0; t < i; t++ {
remPerBoundary += S[t].count
}
for t := j + 1; t < len(S); t++ {
remPerBoundary += S[t].count
}
if S[i].val == S[j].val {
remPerBoundary += (S[i].count + S[j].count) - (S[i].count+S[j].count)%k
}
ans := m*L - (m-1)*remPerBoundary
fmt.Println(ans)
}
}