← Home
For problem statement at 2000-2999/2100-2199/2170-2179/2172/problemH.txt this is a correct solution, but verifier at 2000-2999/2100-2199/2170-2179/2172/verifierH.go ends with All 23 tests passed. can you fix the verifier? package main

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

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

	n := 1 << k
	t = t % k

	R := make([]int, n)
	mask := n - 1
	shift1 := t
	shift2 := k - t
	for x := 0; x < n; x++ {
		R[x] = ((x >> shift1) | (x << shift2)) & mask
	}

	cand := make([]int, n)
	for i := 0; i < n; i++ {
		cand[i] = i
	}

	for x := 0; x < n; x++ {
		if len(cand) == 1 {
			break
		}
		rx := R[x]
		minC := byte(255)
		
		for _, m := range cand {
			idx := rx + m
			if idx >= n {
				idx -= n
			}
			c := d[idx]
			if c < minC {
				minC = c
			}
		}

		j := 0
		for _, m := range cand {
			idx := rx + m
			if idx >= n {
				idx -= n
			}
			if d[idx] == minC {
				cand[j] = m
				j++
			}
		}
		cand = cand[:j]
	}

	best := cand[0]
	out := make([]byte, n)
	for x := 0; x < n; x++ {
		idx := R[x] + best
		if idx >= n {
			idx -= n
		}
		out[x] = d[idx]
	}
	
	outWriter := bufio.NewWriter(os.Stdout)
	outWriter.Write(out)
	outWriter.WriteByte('\n')
	outWriter.Flush()
}