← Home
For problem statement at 1000-1999/1600-1699/1600-1609/1608/problemC.txt this is a correct solution, but verifier at 1000-1999/1600-1699/1600-1609/1608/verifierC.go ends with All tests passed can you fix the verifier? package main

import (
	"bufio"
	"io"
	"os"
	"sort"
)

type Player struct {
	a   int
	b   int
	idx int
}

func main() {
	data, _ := io.ReadAll(os.Stdin)
	p := 0
	nextInt := func() int {
		for p < len(data) && (data[p] < '0' || data[p] > '9') {
			p++
		}
		x := 0
		for p < len(data) && data[p] >= '0' && data[p] <= '9' {
			x = x*10 + int(data[p]-'0')
			p++
		}
		return x
	}

	t := nextInt()
	out := bufio.NewWriterSize(os.Stdout, 1<<20)
	defer out.Flush()

	for ; t > 0; t-- {
		n := nextInt()
		players := make([]Player, n)
		for i := 0; i < n; i++ {
			players[i].a = nextInt()
			players[i].idx = i
		}
		for i := 0; i < n; i++ {
			players[i].b = nextInt()
		}

		sort.Slice(players, func(i, j int) bool {
			return players[i].a < players[j].a
		})

		sufMin := make([]int, n)
		sufMin[n-1] = players[n-1].b
		for i := n - 2; i >= 0; i-- {
			if players[i].b < sufMin[i+1] {
				sufMin[i] = players[i].b
			} else {
				sufMin[i] = sufMin[i+1]
			}
		}

		start := 0
		prefMax := players[0].b
		for i := 0; i < n-1; i++ {
			if players[i].b > prefMax {
				prefMax = players[i].b
			}
			if prefMax < sufMin[i+1] {
				start = i + 1
			}
		}

		ans := make([]byte, n)
		for i := 0; i < n; i++ {
			ans[i] = '0'
		}
		for i := start; i < n; i++ {
			ans[players[i].idx] = '1'
		}
		out.Write(ans)
		out.WriteByte('\n')
	}
}