← Home
For problem statement at 1000-1999/1800-1899/1830-1839/1834/problemF.txt this is a correct solution, but verifier at 1000-1999/1800-1899/1830-1839/1834/verifierF.go ends with All tests passed can you fix the verifier? package main

import (
	"bufio"
	"fmt"
	"os"
)

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

	n := readInt(in)
	V := make([]int, n)
	for i := 0; i < n; i++ {
		V[i] = readInt(in) - 1
	}

	diff1 := make([]int, n+1)
	diff_1 := make([]int, n+1)

	for i := 0; i < n; i++ {
		v := V[i]
		length := n - 1 - v
		if length <= 0 {
			continue
		}

		L1 := (v + 1 - i) % n
		if L1 < 0 {
			L1 += n
		}
		R1 := (n - 1 - i) % n
		if R1 < 0 {
			R1 += n
		}
		if L1 <= R1 {
			diff1[L1]++
			diff1[R1+1]--
		} else {
			diff1[L1]++
			diff1[n]--
			diff1[0]++
			diff1[R1+1]--
		}

		L_1 := (v + 1 + i) % n
		if L_1 < 0 {
			L_1 += n
		}
		R_1 := (n - 1 + i) % n
		if R_1 < 0 {
			R_1 += n
		}
		if L_1 <= R_1 {
			diff_1[L_1]++
			diff_1[R_1+1]--
		} else {
			diff_1[L_1]++
			diff_1[n]--
			diff_1[0]++
			diff_1[R_1+1]--
		}
	}

	for i := 1; i < n; i++ {
		diff1[i] += diff1[i-1]
		diff_1[i] += diff_1[i-1]
	}

	q := readInt(in)

	D := 1
	O := 0

	fmt.Fprintln(out, diff1[O])

	for j := 0; j < q; j++ {
		typ := readInt(in)
		if typ == 1 {
			k := readInt(in)
			O = (O - k) % n
			if O < 0 {
				O += n
			}
		} else if typ == 2 {
			k := readInt(in)
			O = (O + k) % n
		} else if typ == 3 {
			D = -D
			O = (n - 1 - O) % n
			if O < 0 {
				O += n
			}
		}
		
		if D == 1 {
			fmt.Fprintln(out, diff1[O])
		} else {
			fmt.Fprintln(out, diff_1[O])
		}
	}
}

func readInt(in *bufio.Reader) int {
	n := 0
	sign := 1
	for {
		b, err := in.ReadByte()
		if err != nil {
			return n * sign
		}
		if b == '-' {
			sign = -1
			continue
		}
		if b >= '0' && b <= '9' {
			n = n*10 + int(b-'0')
			break
		}
	}
	for {
		b, err := in.ReadByte()
		if err != nil || b < '0' || b > '9' {
			break
		}
		n = n*10 + int(b-'0')
	}
	return n * sign
}