← Home
For problem statement at 0-999/800-899/840-849/845/problemD.txt this is a correct solution, but verifier at 0-999/800-899/840-849/845/verifierD.go ends with All tests passed can you fix the verifier? package main

import (
	"fmt"
	"io"
	"os"
)

type Scanner struct {
	buf []byte
	pos int
}

func NewScanner() *Scanner {
	buf, _ := io.ReadAll(os.Stdin)
	return &Scanner{buf: buf, pos: 0}
}

func (s *Scanner) NextInt() int {
	for s.pos < len(s.buf) && s.buf[s.pos] <= ' ' {
		s.pos++
	}
	if s.pos >= len(s.buf) {
		return 0
	}
	res := 0
	for s.pos < len(s.buf) && s.buf[s.pos] > ' ' {
		res = res*10 + int(s.buf[s.pos]-'0')
		s.pos++
	}
	return res
}

func main() {
	sc := NewScanner()
	if len(sc.buf) == 0 {
		return
	}
	n := sc.NextInt()

	var currentSpeed int
	var speedLimits []int
	var noOvertakeCount int
	var ignored int

	for i := 0; i < n; i++ {
		t := sc.NextInt()
		if t == 1 {
			currentSpeed = sc.NextInt()
			for len(speedLimits) > 0 && speedLimits[len(speedLimits)-1] < currentSpeed {
				ignored++
				speedLimits = speedLimits[:len(speedLimits)-1]
			}
		} else if t == 2 {
			ignored += noOvertakeCount
			noOvertakeCount = 0
		} else if t == 3 {
			limit := sc.NextInt()
			if currentSpeed > limit {
				ignored++
			} else {
				speedLimits = append(speedLimits, limit)
			}
		} else if t == 4 {
			noOvertakeCount = 0
		} else if t == 5 {
			speedLimits = speedLimits[:0]
		} else if t == 6 {
			noOvertakeCount++
		}
	}

	fmt.Println(ignored)
}