← Home
For problem statement at 1000-1999/1800-1899/1800-1809/1801/problemC.txt this is a correct solution, but verifier at 1000-1999/1800-1899/1800-1809/1801/verifierC.go ends with All 100 tests passed can you fix the verifier? ```go
package main

import (
	"bufio"
	"fmt"
	"os"
	"sort"
	"strconv"
)

type Album struct {
	maxVal  int
	records []int
}

func main() {
	const maxCapacity = 1024 * 1024
	buf := make([]byte, maxCapacity)
	scanner := bufio.NewScanner(os.Stdin)
	scanner.Buffer(buf, maxCapacity)
	scanner.Split(bufio.ScanWords)

	writer := bufio.NewWriter(os.Stdout)
	defer writer.Flush()

	readInt := func() int {
		scanner.Scan()
		val, _ := strconv.Atoi(scanner.Text())
		return val
	}

	if !scanner.Scan() {
		return
	}
	t, _ := strconv.Atoi(scanner.Text())

	for i := 0; i < t; i++ {
		n := readInt()
		albums := make([]Album, n)

		for j := 0; j < n; j++ {
			k := readInt()
			var recs []int
			if k > 0 {
				recs = make([]int, 0, 8)
			}

			curLocalMax := 0
			for m := 0; m < k; m++ {
				val := readInt()
				if val > curLocalMax {
					curLocalMax = val
					recs = append(recs, val)
				}
			}
			albums[j] = Album{maxVal: curLocalMax, records: recs}
		}

		sort.Slice(albums, func(a, b int) bool {
			return albums[a].maxVal < albums[b].maxVal
		})

		totalImpression := 0
		curGlobalMax := 0
		idx := 0
		for idx < n {
			groupMax := albums[idx].maxVal
			end := idx
			for end < n && albums[end].maxVal == groupMax {
				end++
			}

			maxGain := 0
			for k := idx; k < end; k++ {
				recs := albums[k].records
				// Find number of elements in recs that are strictly greater than curGlobalMax
				// recs is sorted strictly increasing
				p := sort.Search(len(recs), func(x int) bool {
					return recs[x] > curGlobalMax
				})
				gain := len(recs) - p
				if gain > maxGain {
					maxGain = gain
				}
			}

			totalImpression += maxGain
			curGlobalMax = groupMax
			idx = end
		}

		fmt.Fprintln(writer, totalImpression)
	}
}
```