← Home
For problem statement at 1000-1999/1600-1699/1630-1639/1634/problemF.txt this is a correct solution, but verifier at 1000-1999/1600-1699/1630-1639/1634/verifierF.go ends with All tests passed can you fix the verifier? package main

import (
	"bufio"
	"os"
)

func main() {
	r := bufio.NewReaderSize(os.Stdin, 64*1024)
	w := bufio.NewWriterSize(os.Stdout, 64*1024)
	defer w.Flush()

	readInt := func() int {
		var n int
		var c byte
		for {
			c, _ = r.ReadByte()
			if c >= '0' && c <= '9' {
				break
			}
		}
		n = int(c - '0')
		for {
			c, _ = r.ReadByte()
			if c >= '0' && c <= '9' {
				n = n*10 + int(c-'0')
			} else {
				break
			}
		}
		return n
	}

	readChar := func() byte {
		var c byte
		for {
			c, _ = r.ReadByte()
			if c == 'A' || c == 'B' {
				return c
			}
		}
	}

	n := readInt()
	q := readInt()
	MOD := readInt()

	A := make([]int, n+1)
	for i := 1; i <= n; i++ {
		A[i] = readInt()
	}

	B := make([]int, n+1)
	for i := 1; i <= n; i++ {
		B[i] = readInt()
	}

	D := make([]int, n+1)
	for i := 1; i <= n; i++ {
		D[i] = (A[i] - B[i]) % MOD
		if D[i] < 0 {
			D[i] += MOD
		}
	}

	X := make([]int, n+1)
	for i := 1; i <= n; i++ {
		X[i] = D[i]
		if i >= 2 {
			X[i] = (X[i] - D[i-1]) % MOD
		}
		if i >= 3 {
			X[i] = (X[i] - D[i-2]) % MOD
		}
		if X[i] < 0 {
			X[i] += MOD
		}
	}

	nonZero := 0
	for i := 1; i <= n; i++ {
		if X[i] != 0 {
			nonZero++
		}
	}

	F := make([]int, n+3)
	F[1] = 1
	F[2] = 1
	for i := 3; i < len(F); i++ {
		F[i] = (F[i-1] + F[i-2]) % MOD
	}

	update := func(idx, val int) {
		if idx > n {
			return
		}
		if X[idx] != 0 {
			nonZero--
		}
		X[idx] = (X[idx] + val) % MOD
		if X[idx] < 0 {
			X[idx] += MOD
		}
		if X[idx] != 0 {
			nonZero++
		}
	}

	for i := 0; i < q; i++ {
		c := readChar()
		l := readInt()
		r_idx := readInt()

		if c == 'A' {
			update(l, 1)
			update(r_idx+1, -F[r_idx-l+2])
			update(r_idx+2, -F[r_idx-l+1])
		} else {
			update(l, -1)
			update(r_idx+1, F[r_idx-l+2])
			update(r_idx+2, F[r_idx-l+1])
		}

		if nonZero == 0 {
			w.WriteString("YES\n")
		} else {
			w.WriteString("NO\n")
		}
	}
}