← Home
For problem statement at 1000-1999/1300-1399/1370-1379/1375/problemE.txt this is a correct solution, but verifier at 1000-1999/1300-1399/1370-1379/1375/verifierE.go ends with All 100 tests passed can you fix the verifier? package main

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

type Item struct {
	val int
	idx int
}

func main() {
	in := bufio.NewReaderSize(os.Stdin, 1<<20)
	out := bufio.NewWriterSize(os.Stdout, 1<<20)
	defer out.Flush()

	var n int
	fmt.Fscan(in, &n)

	items := make([]Item, n)
	for i := 0; i < n; i++ {
		fmt.Fscan(in, &items[i].val)
		items[i].idx = i
	}

	sort.Slice(items, func(i, j int) bool {
		if items[i].val != items[j].val {
			return items[i].val < items[j].val
		}
		return items[i].idx < items[j].idx
	})

	rank := make([]int, n)
	pos := make([]int, n+1)
	for i, it := range items {
		r := i + 1
		rank[it.idx] = r
		pos[r] = it.idx
	}

	res := make([][2]int, 0)
	for i := 0; i < n; i++ {
		for r := rank[i] - 1; r >= 1; r-- {
			j := pos[r]
			if j > i {
				res = append(res, [2]int{i + 1, j + 1})
			}
		}
	}

	var sb strings.Builder
	sb.Grow(len(res)*10 + 20)
	sb.WriteString(strconv.Itoa(len(res)))
	sb.WriteByte('\n')
	for _, p := range res {
		sb.WriteString(strconv.Itoa(p[0]))
		sb.WriteByte(' ')
		sb.WriteString(strconv.Itoa(p[1]))
		sb.WriteByte('\n')
	}

	out.WriteString(sb.String())
}