← Home
For problem statement at 1000-1999/1600-1699/1670-1679/1671/problemD.txt this is a correct solution, but verifier at 1000-1999/1600-1699/1670-1679/1671/verifierD.go ends with All tests passed can you fix the verifier? package main

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

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

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

	t := readInt(in)

	for tc := int64(0); tc < t; tc++ {
		n := int(readInt(in))
		x := readInt(in)

		a := make([]int64, n)
		var amin, amax int64
		for i := 0; i < n; i++ {
			a[i] = readInt(in)
			if i == 0 {
				amin, amax = a[i], a[i]
			} else {
				if a[i] < amin {
					amin = a[i]
				}
				if a[i] > amax {
					amax = a[i]
				}
			}
		}

		var score int64 = 0
		for i := 0; i < n-1; i++ {
			diff := a[i] - a[i+1]
			if diff < 0 {
				diff = -diff
			}
			score += diff
		}

		c1 := a[0] - 1
		if a[n-1]-1 < c1 {
			c1 = a[n-1] - 1
		}
		if 2*amin-2 < c1 {
			c1 = 2*amin - 2
		}

		var cx int64 = 0
		if x > amax {
			cx = x - a[0]
			if x-a[n-1] < cx {
				cx = x - a[n-1]
			}
			if 2*x-2*amax < cx {
				cx = 2*x - 2*amax
			}
			if cx < 0 {
				cx = 0
			}
		}

		fmt.Fprintln(out, score+c1+cx)
	}
}