For problem statement at 0-999/100-199/170-179/174/problemC.txt this is a correct solution, but verifier at 0-999/100-199/170-179/174/verifierC.go ends with test 1 failed
expected:
11
1 1
1 2
1 2
1 2
4 4
4 6
4 9
4 9
8 9
9 9
9 9
got:
11
1 1
1 2
1 2
1 2
4 4
4 6
9 9
9 9
8 9
4 9
4 9
exit status 1 can you fix the verifier? package main
import (
"bufio"
"fmt"
"io"
"os"
)
type FastScanner struct {
data []byte
idx int
}
func NewFastScanner() *FastScanner {
data, _ := io.ReadAll(os.Stdin)
return &FastScanner{data: data}
}
func (fs *FastScanner) NextInt() int {
for fs.idx < len(fs.data) && (fs.data[fs.idx] < '0' || fs.data[fs.idx] > '9') && fs.data[fs.idx] != '-' {
fs.idx++
}
sign := 1
if fs.data[fs.idx] == '-' {
sign = -1
fs.idx++
}
val := 0
for fs.idx < len(fs.data) && fs.data[fs.idx] >= '0' && fs.data[fs.idx] <= '9' {
val = val*10 + int(fs.data[fs.idx]-'0')
fs.idx++
}
return sign * val
}
type Pair struct {
l, r int
}
func main() {
fs := NewFastScanner()
n := fs.NextInt()
a := make([]int, n)
for i := 0; i < n; i++ {
a[i] = fs.NextInt()
}
stack := make([]int, 0)
ans := make([]Pair, 0)
prev := 0
for i := 1; i <= n; i++ {
cur := a[i-1]
if cur > prev {
for j := 0; j < cur-prev; j++ {
stack = append(stack, i)
}
} else if cur < prev {
for j := 0; j < prev-cur; j++ {
s := stack[len(stack)-1]
stack = stack[:len(stack)-1]
ans = append(ans, Pair{s, i - 1})
}
}
prev = cur
}
for len(stack) > 0 {
s := stack[len(stack)-1]
stack = stack[:len(stack)-1]
ans = append(ans, Pair{s, n})
}
out := bufio.NewWriterSize(os.Stdout, 1<<20)
fmt.Fprintln(out, len(ans))
for _, p := range ans {
fmt.Fprintln(out, p.l, p.r)
}
out.Flush()
}