← Home
For problem statement at 0-999/900-999/930-939/938/problemF.txt this is a correct solution, but verifier at 0-999/900-999/930-939/938/verifierF.go ends with all tests passed can you fix the verifier? package main

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

func main() {
	scanner := bufio.NewScanner(os.Stdin)
	if !scanner.Scan() {
		return
	}
	s := scanner.Text()
	n := len(s)
	if n == 0 {
		return
	}

	k := 0
	for (1 << (k + 1)) <= n {
		k++
	}

	req := (1 << k) - 1
	r := n - req

	prevReach := make([]bool, req+1)
	cand := make([]bool, req+1)
	prevReach[0] = true

	result := make([]byte, 0, r)

	for j := 1; j <= r; j++ {
		copy(cand, prevReach)

		for bit := 0; bit < k; bit++ {
			half := 1 << bit
			step := half << 1
			for i := 0; i <= req; i += step {
				for jBit := 0; jBit < half; jBit++ {
					e := i + jBit
					if cand[e] {
						cand[e|half] = true
					}
				}
			}
		}

		minC := byte(255)
		for e := 0; e <= req; e++ {
			if cand[e] {
				idx := e + j - 1
				if s[idx] < minC {
					minC = s[idx]
				}
			}
		}

		result = append(result, minC)

		for e := 0; e <= req; e++ {
			if cand[e] {
				idx := e + j - 1
				if s[idx] == minC {
					prevReach[e] = true
				} else {
					prevReach[e] = false
				}
			} else {
				prevReach[e] = false
			}
		}
	}

	fmt.Println(string(result))
}