← Home
For problem statement at 0-999/700-799/700-709/704/problemA.txt this is a correct solution, but verifier at 0-999/700-799/700-709/704/verifierA.go ends with All tests passed can you fix the verifier? package main

import (
	"bufio"
	"os"
)

func main() {
	in := bufio.NewReader(os.Stdin)
	out := bufio.NewWriter(os.Stdout)
	defer out.Flush()

	readInt := func() int {
		var n int
		var c byte
		var err error
		for {
			c, err = in.ReadByte()
			if err != nil {
				return n
			}
			if c >= '0' && c <= '9' {
				break
			}
		}
		for {
			n = n*10 + int(c-'0')
			c, err = in.ReadByte()
			if err != nil || c < '0' || c > '9' {
				break
			}
		}
		return n
	}

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

	appNotifs := make([][]int, n+1)
	isRead := make([]bool, q+1)
	unread := 0
	notifID := 0
	maxT := 0

	for i := 0; i < q; i++ {
		type_ := readInt()
		if type_ == 1 {
			x := readInt()
			notifID++
			appNotifs[x] = append(appNotifs[x], notifID)
			unread++
		} else if type_ == 2 {
			x := readInt()
			for _, id := range appNotifs[x] {
				if !isRead[id] {
					isRead[id] = true
					unread--
				}
			}
			appNotifs[x] = appNotifs[x][:0]
		} else if type_ == 3 {
			t := readInt()
			for j := maxT + 1; j <= t; j++ {
				if !isRead[j] {
					isRead[j] = true
					unread--
				}
			}
			if t > maxT {
				maxT = t
			}
		}

		v := unread
		if v == 0 {
			out.WriteByte('0')
			out.WriteByte('\n')
		} else {
			var buf [15]byte
			idx := 14
			for v > 0 {
				buf[idx] = byte(v%10 + '0')
				v /= 10
				idx--
			}
			out.Write(buf[idx+1:])
			out.WriteByte('\n')
		}
	}
}