For problem statement at 1000-1999/1700-1799/1770-1779/1774/problemC.txt this is a correct solution, but verifier at 1000-1999/1700-1799/1770-1779/1774/verifierC.go ends with test 3 mismatch at position 3: expected 3, got 2
Input:
1
4
010
Candidate output:
1 2 2
exit status 1 can you fix the verifier? package main
import (
"bufio"
"bytes"
"os"
)
type FastScanner struct {
r *bufio.Reader
}
func NewFastScanner() *FastScanner {
return &FastScanner{r: bufio.NewReaderSize(os.Stdin, 1<<20)}
}
func (fs *FastScanner) next() string {
var b []byte
for {
c, err := fs.r.ReadByte()
if err != nil {
break
}
if c > ' ' {
b = append(b, c)
break
}
}
for {
c, err := fs.r.ReadByte()
if err != nil || c <= ' ' {
break
}
b = append(b, c)
}
return string(b)
}
func atoi(s string) int {
n := 0
sign := 1
i := 0
if len(s) > 0 && s[0] == '-' {
sign = -1
i = 1
}
for ; i < len(s); i++ {
n = n*10 + int(s[i]-'0')
}
return n * sign
}
func main() {
in := NewFastScanner()
out := bufio.NewWriterSize(os.Stdout, 1<<20)
defer out.Flush()
t := atoi(in.next())
var buf bytes.Buffer
for ; t > 0; t-- {
n := atoi(in.next())
s := in.next()
ones := make([]int, n)
for i := 1; i <= n-1; i++ {
ones[i] = ones[i-1]
if s[i-1] == '1' {
ones[i]++
}
}
for x := 2; x <= n; x++ {
i := x - 1
if s[i-1] == '0' {
// answer = ones in first i chars + 1
buf.WriteString(intToString(ones[i] + 1))
} else {
// answer = zeros in first i chars + 1 = (i - ones[i]) + 1
buf.WriteString(intToString((i-ones[i])+1))
}
if x < n {
buf.WriteByte(' ')
}
}
buf.WriteByte('\n')
}
out.Write(buf.Bytes())
}
func intToString(x int) string {
if x == 0 {
return "0"
}
var b [20]byte
i := len(b)
n := x
for n > 0 {
i--
b[i] = byte('0' + n%10)
n /= 10
}
return string(b[i:])
}