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

import (
	"io"
	"os"
	"sort"
	"strconv"
)

func main() {
	b, _ := io.ReadAll(os.Stdin)
	var pos int
	readInt := func() int64 {
		for pos < len(b) && (b[pos] < '0' || b[pos] > '9') {
			pos++
		}
		if pos == len(b) {
			return 0
		}
		var res int64
		for pos < len(b) && b[pos] >= '0' && b[pos] <= '9' {
			res = res*10 + int64(b[pos]-'0')
			pos++
		}
		return res
	}

	n := int(readInt())
	if n == 0 {
		return
	}

	type Event struct {
		x int64
		d int
	}
	events := make([]Event, 0, 2*n)

	for i := 0; i < n; i++ {
		l := readInt()
		r := readInt()
		events = append(events, Event{x: l, d: 1})
		events = append(events, Event{x: r+1, d: -1})
	}

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

	ans := make([]int64, n+1)
	var cov int
	var lastX int64 = events[0].x

	for _, e := range events {
		if cov > 0 && cov <= n {
			ans[cov] += e.x - lastX
		}
		cov += e.d
		lastX = e.x
	}

	var out []byte
	for i := 1; i <= n; i++ {
		if i > 1 {
			out = append(out, ' ')
		}
		out = strconv.AppendInt(out, ans[i], 10)
	}
	out = append(out, '\n')
	os.Stdout.Write(out)
}