← Home
For problem statement at 1000-1999/1200-1299/1240-1249/1244/problemG.txt this is a correct solution, but verifier at 1000-1999/1200-1299/1240-1249/1244/verifierG.go ends with test 1 failed
input:
10 63
expected:63
9 1 2 3 4 5 6 7 8 10
1 2 3 4 5 6 7 8 9 10
actual:63
1 2 3 4 5 6 7 8 9 10
9 2 3 4 5 6 7 8 1 10

exit status 1 can you fix the verifier? package main

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

func main() {
	scanner := bufio.NewScanner(os.Stdin)
	scanner.Split(bufio.ScanWords)

	if !scanner.Scan() {
		return
	}
	nStr := scanner.Text()
	if !scanner.Scan() {
		return
	}
	kStr := scanner.Text()

	n, _ := strconv.Atoi(nStr)
	k, _ := strconv.ParseInt(kStr, 10, 64)

	S := int64(n) * int64(n+1) / 2
	if k < S {
		fmt.Println("-1")
		return
	}

	p := make([]int, n)
	q := make([]int, n)
	for i := 0; i < n; i++ {
		p[i] = i + 1
		q[i] = i + 1
	}

	for i := 1; i <= n/2; i++ {
		if S == k {
			break
		}
		maxInc := int64(n - 2*i + 1)
		if S+maxInc <= k {
			q[i-1], q[n-i] = q[n-i], q[i-1]
			S += maxInc
		} else {
			delta := k - S
			q[i-1], q[i-1+int(delta)] = q[i-1+int(delta)], q[i-1]
			S += delta
			break
		}
	}

	out := bufio.NewWriter(os.Stdout)
	fmt.Fprintln(out, S)
	for i := 0; i < n; i++ {
		if i > 0 {
			out.WriteByte(' ')
		}
		out.WriteString(strconv.Itoa(p[i]))
	}
	out.WriteByte('\n')
	for i := 0; i < n; i++ {
		if i > 0 {
			out.WriteByte(' ')
		}
		out.WriteString(strconv.Itoa(q[i]))
	}
	out.WriteByte('\n')
	out.Flush()
}