Submission #62280999


Source Code Expand

package main

import (
	"bufio"
	"fmt"
	"io"
	"os"
	"sort"
)

func main() {
	solve(os.Stdin, os.Stdout)
}

func solve(_r io.Reader, _w io.Writer) {
	in, out := bufio.NewReader(_r), bufio.NewWriter(_w)
	defer out.Flush()

	type pair struct{ x, y int }
	n, w := readTwoNums(in)
	pos := make([]pair, n)
	nums := make([][]int, w+1)
	for i := range pos {
		pos[i].x, pos[i].y = readTwoNums(in)
		nums[pos[i].x] = append(nums[pos[i].x], pos[i].y)
	}

	mxcnt := n
	for i := 1; i <= w; i++ {
		sort.Ints(nums[i])
		mxcnt = min(mxcnt, len(nums[i]))
	}
	times := make([]int, mxcnt)
	for j := 1; j <= w; j++ {
		for i := range times {
			times[i] = max(times[i], nums[j][i])
		}
	}

	t := make([]int, n)
	for i := range pos {
		idx := sort.SearchInts(nums[pos[i].x], pos[i].y)
		if idx < mxcnt {
			t[i] = times[idx]
		} else {
			t[i] = -1
		}
	}

	for q := readNum(in); q > 0; q-- {
		v, a := readTwoNums(in)
		if t[a-1] == -1 || v < t[a-1] {
			fmt.Fprintln(out, "Yes")
		} else {
			fmt.Fprintln(out, "No")
		}
	}
}

func max(a, b int) int {
	if a >= b {
		return a
	}
	return b
}

func min(a, b int) int {
	if a <= b {
		return a
	}
	return b
}

func readString(reader *bufio.Reader) string {
	s, _ := reader.ReadString('\n')
	for i := 0; i < len(s); i++ {
		if s[i] == '\n' || s[i] == '\r' {
			return s[:i]
		}
	}
	return s
}

func readInt(bytes []byte, from int, val *int) int {
	i := from
	sign := 1
	if bytes[i] == '-' {
		sign = -1
		i++
	}
	tmp := 0
	for i < len(bytes) && bytes[i] >= '0' && bytes[i] <= '9' {
		tmp = tmp*10 + int(bytes[i]-'0')
		i++
	}
	*val = tmp * sign
	return i
}

func readNum(reader *bufio.Reader) (a int) {
	bs, _ := reader.ReadBytes('\n')
	readInt(bs, 0, &a)
	return
}

func readTwoNums(reader *bufio.Reader) (a int, b int) {
	res := readNNums(reader, 2)
	a, b = res[0], res[1]
	return
}

func readThreeNums(reader *bufio.Reader) (a int, b int, c int) {
	res := readNNums(reader, 3)
	a, b, c = res[0], res[1], res[2]
	return
}

func readNNums(reader *bufio.Reader, n int) []int {
	res := make([]int, n)
	x := 0
	bs, _ := reader.ReadBytes('\n')
	for i := 0; i < n; i++ {
		for x < len(bs) && (bs[x] < '0' || bs[x] > '9') && bs[x] != '-' {
			x++
		}
		x = readInt(bs, x, &res[i])
	}
	return res
}

Submission Info

Submission Time
Task D - Gravity
User xylu
Language Go (go 1.20.6)
Score 400
Code Size 2351 Byte
Status AC
Exec Time 73 ms
Memory 21136 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 400 / 400
Status
AC × 2
AC × 28
Set Name Test Cases
Sample 00_sample_01.txt, 00_sample_02.txt
All 00_sample_01.txt, 00_sample_02.txt, 01_test_01.txt, 01_test_02.txt, 01_test_03.txt, 01_test_04.txt, 01_test_05.txt, 01_test_06.txt, 01_test_07.txt, 01_test_08.txt, 01_test_09.txt, 01_test_10.txt, 01_test_11.txt, 01_test_12.txt, 01_test_13.txt, 01_test_14.txt, 01_test_15.txt, 01_test_16.txt, 01_test_17.txt, 01_test_18.txt, 01_test_19.txt, 01_test_20.txt, 01_test_21.txt, 01_test_22.txt, 01_test_23.txt, 01_test_24.txt, 01_test_25.txt, 01_test_26.txt
Case Name Status Exec Time Memory
00_sample_01.txt AC 0 ms 1612 KiB
00_sample_02.txt AC 0 ms 1616 KiB
01_test_01.txt AC 25 ms 7176 KiB
01_test_02.txt AC 70 ms 15448 KiB
01_test_03.txt AC 48 ms 9600 KiB
01_test_04.txt AC 66 ms 12264 KiB
01_test_05.txt AC 45 ms 11504 KiB
01_test_06.txt AC 63 ms 15868 KiB
01_test_07.txt AC 21 ms 5824 KiB
01_test_08.txt AC 64 ms 15756 KiB
01_test_09.txt AC 55 ms 10292 KiB
01_test_10.txt AC 60 ms 12648 KiB
01_test_11.txt AC 37 ms 12176 KiB
01_test_12.txt AC 64 ms 15620 KiB
01_test_13.txt AC 43 ms 7596 KiB
01_test_14.txt AC 66 ms 12236 KiB
01_test_15.txt AC 26 ms 8376 KiB
01_test_16.txt AC 73 ms 21136 KiB
01_test_17.txt AC 28 ms 5812 KiB
01_test_18.txt AC 61 ms 16020 KiB
01_test_19.txt AC 8 ms 3552 KiB
01_test_20.txt AC 64 ms 15840 KiB
01_test_21.txt AC 46 ms 11824 KiB
01_test_22.txt AC 64 ms 13608 KiB
01_test_23.txt AC 44 ms 12292 KiB
01_test_24.txt AC 55 ms 14816 KiB
01_test_25.txt AC 49 ms 17392 KiB
01_test_26.txt AC 64 ms 19496 KiB