← Home
For problem statement at 1000-1999/1300-1399/1330-1339/1333/problemD.txt this is a correct solution, but verifier at 1000-1999/1300-1399/1330-1339/1333/verifierD.go ends with case 15 failed: no output
input:
3 0
RRR
output:
exit status 1 can you fix the verifier? package main

import (
	"bufio"
	"os"
)

func main() {
	in := bufio.NewReader(os.Stdin)
	n := readInt(in)
	k := readInt(in)

	s := make([]byte, 0, n)
	for {
		b, err := in.ReadByte()
		if err != nil {
			break
		}
		if b == 'R' || b == 'L' {
			s = append(s, b)
			if len(s) == n {
				break
			}
		}
	}

	var rounds [][]int
	total := 0

	for {
		var r []int
		for i := 0; i < n-1; i++ {
			if s[i] == 'R' && s[i+1] == 'L' {
				r = append(r, i+1)
			}
		}
		if len(r) == 0 {
			break
		}
		for _, idx := range r {
			s[idx-1] = 'L'
			s[idx] = 'R'
		}
		rounds = append(rounds, r)
		total += len(r)
	}

	if k < len(rounds) || k > total {
		out := bufio.NewWriter(os.Stdout)
		out.WriteString("-1\n")
		out.Flush()
		return
	}

	extra := k - len(rounds)
	out := bufio.NewWriter(os.Stdout)
	defer out.Flush()

	for _, r := range rounds {
		for len(r) > 1 && extra > 0 {
			out.WriteString("1 ")
			writeInt(out, r[0])
			out.WriteByte('\n')
			r = r[1:]
			extra--
		}
		writeInt(out, len(r))
		for _, idx := range r {
			out.WriteByte(' ')
			writeInt(out, idx)
		}
		out.WriteByte('\n')
	}
}

func readInt(in *bufio.Reader) int {
	n := 0
	started := false
	for {
		b, err := in.ReadByte()
		if err != nil {
			break
		}
		if b >= '0' && b <= '9' {
			n = n*10 + int(b-'0')
			started = true
		} else if started {
			break
		}
	}
	return n
}

func writeInt(w *bufio.Writer, n int) {
	if n == 0 {
		w.WriteByte('0')
		return
	}
	var buf [20]byte
	i := len(buf)
	for n > 0 {
		i--
		buf[i] = '0' + byte(n%10)
		n /= 10
	}
	w.Write(buf[i:])
}