golang快排60分已解决,使用快读bufio
查看原帖
golang快排60分已解决,使用快读bufio
467946
Yuuuu楼主2024/4/18 11:11
package main

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

func main() {
	var n, k, i int64
	fmt.Scanf("%d %d", &n, &k)
	q := make([]int, n)

	out := bufio.NewWriter(os.Stdout)
	defer out.Flush()
	in := bufio.NewReader(os.Stdin)
	read_int := func() (x int) {
		c, _ := in.ReadByte()
		for ; c < '0'; c, _ = in.ReadByte() {
		}
		for ; c >= '0'; c, _ = in.ReadByte() {
			x = x*10 + int(c-'0')
		}
		return
	}
	for i = 0; i < n; i++ {
		q[i] = read_int()
	}

	//for i = 0; i < n; i++ {
	//	fmt.Scan(&q[i])
	//}

	sort(q, 0, n-1)
	fmt.Println(q[k])
}

func sort(q []int, l, r int64) {
	if l >= r {
		return
	}

	x, i, j := q[l], l-1, r+1

	for i < j {
		for {
			i++
			if q[i] >= x {
				break
			}
		}

		for {
			j--
			if q[j] <= x {
				break
			}
		}

		if i < j {
			q[i], q[j] = q[j], q[i]
		}
	}

	sort(q, l, j)
	sort(q, j+1, r)
}

参考:https://blog.csdn.net/qq_41961459/article/details/115752865

2024/4/18 11:11
加载中...