← Home
For problem statement at 0-999/600-699/690-699/691/problemF.txt this is a correct solution, but verifier at 0-999/600-699/690-699/691/verifierF.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()

	n := readInt(in)
	M := int64(3000000)
	c := make([]int64, M+5)
	for i := int64(0); i < n; i++ {
		v := readInt(in)
		if v <= M {
			c[v]++
		}
	}

	S := make([]int64, M+5)
	for x := int64(1); x <= M; x++ {
		if c[x] == 0 {
			continue
		}
		for y := int64(1); y <= M/x; y++ {
			if x == y {
				S[x*y] += c[x] * (c[x] - 1)
			} else {
				S[x*y] += c[x] * c[y]
			}
		}
	}

	P := make([]int64, M+5)
	for i := int64(1); i <= M; i++ {
		P[i] = P[i-1] + S[i]
	}

	m := readInt(in)
	total := n * (n - 1)
	for i := int64(0); i < m; i++ {
		p := readInt(in)
		ans := total
		if p-1 <= M {
			ans -= P[p-1]
		} else {
			ans -= P[M]
		}
		writeInt(out, ans)
	}
}

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

func writeInt(out *bufio.Writer, n int64) {
	if n == 0 {
		out.WriteByte('0')
		out.WriteByte('\n')
		return
	}
	if n < 0 {
		out.WriteByte('-')
		n = -n
	}
	var buf [20]byte
	i := 19
	for n > 0 {
		buf[i] = byte(n%10 + '0')
		n /= 10
		i--
	}
	out.Write(buf[i+1:])
	out.WriteByte('\n')
}