For problem statement at 0-999/600-699/610-619/613/problemC.txt this is a correct solution, but verifier at 0-999/600-699/610-619/613/verifierC.go ends with case 2 failed: expected 1
bbbbccdddaaaaadddccbbbb got 1
aabbbbccdddadddccbbbbaa
input:
4
5 8 4 6
exit status 1 can you fix the verifier? ```go
package main
import (
"bufio"
"fmt"
"os"
)
func gcd(a, b int) int {
for b != 0 {
a, b = b, a%b
}
return a
}
func main() {
reader := bufio.NewReader(os.Stdin)
writer := bufio.NewWriter(os.Stdout)
defer writer.Flush()
var n int
if _, err := fmt.Fscan(reader, &n); err != nil {
return
}
a := make([]int, n)
for i := 0; i < n; i++ {
fmt.Fscan(reader, &a[i])
}
g := 0
if n > 0 {
g = a[0]
for i := 1; i < n; i++ {
g = gcd(g, a[i])
}
}
maxCuts := 0
bestK := 0
for k := 1; k*k <= g; k++ {
if g%k == 0 {
divisors := []int{k}
if k*k != g {
divisors = append(divisors, g/k)
}
for _, d := range divisors {
odds := 0
for _, val := range a {
if (val/d)%2 != 0 {
odds++
}
}
if odds <= 1 {
currentCuts := d
if odds == 0 {
currentCuts = d * 2
}
if currentCuts > maxCuts {
maxCuts = currentCuts
bestK = d
}
}
}
}
}
fmt.Fprintln(writer, maxCuts)
if maxCuts == 0 {
for i, count := range a {
for j := 0; j < count; j++ {
writer.WriteByte(byte('a' + i))
}
}
writer.WriteByte('\n')
} else {
b := make([]int, n)
oddIdx := -1
for i := 0; i < n; i++ {
b[i] = a[i] / bestK
if b[i]%2 != 0 {
oddIdx = i
}
}
var half []byte
for i := 0; i < n; i++ {
cnt := b[i] / 2
for j := 0; j < cnt; j++ {
half = append(half, byte('a'+i))
}
}
var block []byte
block = append(block, half...)
if oddIdx != -1 {
block = append(block, byte('a'+oddIdx))
}
for i := len(half) - 1; i >= 0; i-- {
block = append(block, half[i])
}
for i := 0; i < bestK; i++ {
writer.Write(block)
}
writer.WriteByte('\n')
}
}
```