28852023-02-01 18:36:37bencewokVideójátékgolangHibás válasz 0/100129ms56128 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ÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Hibás válasz27ms30044 KiB
2Hibás válasz26ms30876 KiB
subtask20/10
3Elfogadva26ms30496 KiB
4Elfogadva24ms30964 KiB
5Elfogadva25ms31688 KiB
6Elfogadva24ms31908 KiB
7Hibás válasz26ms32060 KiB
8Hibás válasz26ms32240 KiB
9Elfogadva25ms32272 KiB
10Hibás válasz25ms32016 KiB
11Hibás válasz25ms32420 KiB
subtask30/20
12Hibás válasz24ms32256 KiB
13Hibás válasz25ms32220 KiB
14Hibás válasz25ms32384 KiB
15Hibás válasz25ms32212 KiB
16Hibás válasz25ms32556 KiB
17Futási hiba127ms54216 KiB
18Futási hiba125ms55136 KiB
19Futási hiba128ms55520 KiB
20Futási hiba128ms55756 KiB
21Futási hiba128ms55656 KiB
22Futási hiba126ms56012 KiB
subtask40/30
23Futási hiba128ms55920 KiB
24Futási hiba128ms55608 KiB
25Futási hiba125ms55560 KiB
26Futási hiba128ms55088 KiB
27Futási hiba128ms55864 KiB
28Futási hiba125ms55988 KiB
29Futási hiba128ms56120 KiB
30Futási hiba125ms55804 KiB
31Futási hiba128ms56028 KiB
subtask50/40
32Futási hiba129ms56076 KiB
33Futási hiba125ms56020 KiB
34Futási hiba128ms55864 KiB
35Futási hiba125ms55820 KiB
36Futási hiba123ms56000 KiB
37Futási hiba122ms55664 KiB
38Futási hiba122ms56124 KiB
39Futási hiba128ms55788 KiB
40Futási hiba125ms56128 KiB
41Futási hiba123ms56016 KiB