Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "bufio"
- "os"
- "strconv"
- )
- func main() {
- defer writer.Flush()
- scanner.Split(bufio.ScanWords)
- arrayLength := ReadInt32()
- array := make([]int, arrayLength)
- for numberIndex := 0; numberIndex < arrayLength; numberIndex++ {
- array[numberIndex] = ReadInt32()
- }
- indexesDynamic := ReadString()
- var maxElement, minElement int
- maxAndMinAreSetted := false
- nextAfterPreviousNonDynamicIndex := 0
- result := true
- for index := 0; index < len(indexesDynamic); index++ {
- if !maxAndMinAreSetted || maxElement < array[index] {
- maxElement = array[index]
- }
- if !maxAndMinAreSetted || minElement > array[index] {
- minElement = array[index]
- }
- maxAndMinAreSetted = true
- if indexesDynamic[index] == '0' {
- if minElement != nextAfterPreviousNonDynamicIndex+1 || maxElement != index+1 {
- result = false
- break
- }
- nextAfterPreviousNonDynamicIndex = index + 1
- maxAndMinAreSetted = false
- }
- }
- var answer string
- if result {
- answer = "YES"
- } else {
- answer = "NO"
- }
- writer.WriteString(answer + "\n")
- }
- func max(x int, y int) int {
- if x > y {
- return x
- }
- return y
- }
- func min(x int, y int) int {
- if x < y {
- return x
- }
- return y
- }
- var scanner *bufio.Scanner = bufio.NewScanner(os.Stdin)
- var writer *bufio.Writer = bufio.NewWriter(os.Stdout)
- func ReadString() string {
- scanner.Scan()
- return scanner.Text()
- }
- func ReadInt32() int {
- ans, _ := strconv.Atoi(ReadString())
- return ans
- }
Advertisement
Add Comment
Please, Sign In to add comment