← Home
For problem statement at 0-999/800-899/800-809/802/problemF.txt this is a correct solution, but verifier at 0-999/800-899/800-809/802/verifierF.go ends with test 3 failed
input:1
3 1 3 2 4 1 1 3 1 4 2 2 3 3 0 1 0 0 2 4 2 3 3 0 2 3 1 1 1 4 4 1 1 4 1 4 0 1 3 0 0 0 0 3 2 1 4 0 0 2 2 0 1 1 0 0 2 3 4 4 2 4 4 3 0 3 3 3 2 1 2 0 2 2 4 4 0 0 3 4 0 2 4 2 3 0 3 4 1 1 3 2 0 1 2 1 0 4 2 4 4 2 1 1 4 1 0 3 2 3 0 3 2 4 4 2 2 3 2 1 1 1 1 4 3 1 1 2 2 3 0 3 1 0 0 2 2 4 3 3 4 1 0 0 4 0 4 3 2 0 2 3 4 1 3 3 0 2 2 0 4 0 1 2 1 0 2 0 1 1 1 4 3 1 4 4 3 0 2 1 0 2 2 2 3 0 1 4 2 2 1 0 1 3 4 0 1 3 0 3 4 3 0 1 4 4 1 0 0 2 4 4 4 0 2 2 0 2 0 1 1 0 2 0 2 2 4 3 2 4 0 3 0 4 4 2 4 0 3 0 4 4 1 3 4 4 0 3 4 2
expected: poisson got: uniform

exit status 1 can you fix the verifier? package main

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

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

	var T int
	if _, err := fmt.Fscan(in, &T); err != nil {
		return
	}
	for ; T > 0; T-- {
		var P, N int
		if _, err := fmt.Fscan(in, &P, &N); err != nil {
			return
		}
		var sumSq int64
		var sumCube int64
		outOfRange := false
		for i := 0; i < N; i++ {
			var x int64
			fmt.Fscan(in, &x)
			if !outOfRange && (x > int64(P) || x < -int64(P)) {
				outOfRange = true
			}
			sumSq += x * x
			sumCube += x * x * x
		}

		if outOfRange {
			fmt.Fprintln(out, "poisson")
			continue
		}

		m2 := float64(sumSq) / float64(N)
		m3 := float64(sumCube) / float64(N)

		varPoi := float64(P)
		varUni := float64(P*(P+1)) / 3.0

		if P == 2 {
			if m3 > 0 {
				fmt.Fprintln(out, "poisson")
			} else {
				fmt.Fprintln(out, "uniform")
			}
			continue
		}

		dPoi := math.Abs(m2 - varPoi)
		dUni := math.Abs(m2 - varUni)

		if math.Abs(dPoi-dUni) <= 1e-9 {
			if m3 > 0 {
				fmt.Fprintln(out, "poisson")
			} else {
				fmt.Fprintln(out, "uniform")
			}
		} else if dPoi < dUni {
			fmt.Fprintln(out, "poisson")
		} else {
			fmt.Fprintln(out, "uniform")
		}
	}
}