2885 2023. 02. 01 18:36:37 bencewok Videójáték golang Hibás válasz 0/100 129ms 56128 KiB
package main

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

func binarySearch(needle int, haystack []int) bool {

	low := 0
	high := len(haystack) - 1

	for low <= high {
		median := (low + high) / 2
		if haystack[median] < needle {
			low = median + 1
		} else {
			high = median - 1
		}
	}
	if low == len(haystack) || haystack[low] != needle {
		return false
	}
	return true
}

func input() []int {
	var input string
	var output []int

	scanner := bufio.NewScanner(os.Stdin)
	scanner.Scan()
	input = scanner.Text()

	inputSplit := strings.Split(input, " ")

	for i := 0; i < len(inputSplit); i++ {
		charInt, _ := strconv.Atoi(inputSplit[i])
		output = append(output, charInt)
	}

	return output
}

func main() {
	var aBreaks, yBreaks []int
	var boretimeNow, output int

	boretime := input()[0]

	aLenght := input()[0]
	for i := 0; i < aLenght; i++ {
		ln := input()
		aBreaks = append(aBreaks, ln[0])
		aBreaks = append(aBreaks, ln[1])
	}

	yLenght := input()[0]
	for i := 0; i < yLenght; i++ {
		ln := input()
		yBreaks = append(yBreaks, ln[0])
		yBreaks = append(yBreaks, ln[1])
	}

	var max int
	for i := 1; i < len(yBreaks); i++ {
		if max < yBreaks[i] {
			max = yBreaks[i]
		}
	}

	for i := 1; i < len(aBreaks); i++ {
		if max < aBreaks[i] {
			max = aBreaks[i]
		}
	}

	var u, q int
	var aBreaksList []int
	for true {

		if u == len(aBreaks) {
			break
		}

		if aBreaks[u]+q != aBreaks[u+1]+1 {

			aBreaksList = append(aBreaksList, aBreaks[u]+q)
			q++

		} else {
			q = 0
			u += 2
		}
	}

	q, u = 0, 0
	var yBreaksList []int
	for true {

		if u == len(yBreaks) {
			break
		}

		if yBreaks[u]+q != yBreaks[u+1]+1 {

			yBreaksList = append(yBreaksList, yBreaks[u]+q)
			q++

		} else {
			q = 0
			u += 2
		}
	}

	var p int
	for i := 0; i < len(aBreaksList); i++ {
		if binarySearch(aBreaksList[i], yBreaksList) == true {
			//fmt.Println(aBreaksList[i], "aa")
			output++
		} else {
			boretimeNow++
			if boretimeNow == boretime {
				p += 2
				i = p
			}
		}
	}

	//fmt.Println(aBreaksList, yBreaksList)

	fmt.Println(output)
}
Részfeladat Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Hibás válasz 27ms 30044 KiB
2 Hibás válasz 26ms 30876 KiB
subtask2 0/10
3 Elfogadva 26ms 30496 KiB
4 Elfogadva 24ms 30964 KiB
5 Elfogadva 25ms 31688 KiB
6 Elfogadva 24ms 31908 KiB
7 Hibás válasz 26ms 32060 KiB
8 Hibás válasz 26ms 32240 KiB
9 Elfogadva 25ms 32272 KiB
10 Hibás válasz 25ms 32016 KiB
11 Hibás válasz 25ms 32420 KiB
subtask3 0/20
12 Hibás válasz 24ms 32256 KiB
13 Hibás válasz 25ms 32220 KiB
14 Hibás válasz 25ms 32384 KiB
15 Hibás válasz 25ms 32212 KiB
16 Hibás válasz 25ms 32556 KiB
17 Futási hiba 127ms 54216 KiB
18 Futási hiba 125ms 55136 KiB
19 Futási hiba 128ms 55520 KiB
20 Futási hiba 128ms 55756 KiB
21 Futási hiba 128ms 55656 KiB
22 Futási hiba 126ms 56012 KiB
subtask4 0/30
23 Futási hiba 128ms 55920 KiB
24 Futási hiba 128ms 55608 KiB
25 Futási hiba 125ms 55560 KiB
26 Futási hiba 128ms 55088 KiB
27 Futási hiba 128ms 55864 KiB
28 Futási hiba 125ms 55988 KiB
29 Futási hiba 128ms 56120 KiB
30 Futási hiba 125ms 55804 KiB
31 Futási hiba 128ms 56028 KiB
subtask5 0/40
32 Futási hiba 129ms 56076 KiB
33 Futási hiba 125ms 56020 KiB
34 Futási hiba 128ms 55864 KiB
35 Futási hiba 125ms 55820 KiB
36 Futási hiba 123ms 56000 KiB
37 Futási hiba 122ms 55664 KiB
38 Futási hiba 122ms 56124 KiB
39 Futási hiba 128ms 55788 KiB
40 Futási hiba 125ms 56128 KiB
41 Futási hiba 123ms 56016 KiB