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()
}