Vermilliest

0920c FULL

Feb 3rd, 2018
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 1.48 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4.     "bufio"
  5.     "os"
  6.     "strconv"
  7. )
  8.  
  9. func main() {
  10.     defer writer.Flush()
  11.     scanner.Split(bufio.ScanWords)
  12.     arrayLength := ReadInt32()
  13.     array := make([]int, arrayLength)
  14.     for numberIndex := 0; numberIndex < arrayLength; numberIndex++ {
  15.         array[numberIndex] = ReadInt32()
  16.     }
  17.     indexesDynamic := ReadString()
  18.     var maxElement, minElement int
  19.     maxAndMinAreSetted := false
  20.     nextAfterPreviousNonDynamicIndex := 0
  21.     result := true
  22.     for index := 0; index < len(indexesDynamic); index++ {
  23.         if !maxAndMinAreSetted || maxElement < array[index] {
  24.             maxElement = array[index]
  25.         }
  26.         if !maxAndMinAreSetted || minElement > array[index] {
  27.             minElement = array[index]
  28.         }
  29.         maxAndMinAreSetted = true
  30.         if indexesDynamic[index] == '0' {
  31.             if minElement != nextAfterPreviousNonDynamicIndex+1 || maxElement != index+1 {
  32.                 result = false
  33.                 break
  34.             }
  35.             nextAfterPreviousNonDynamicIndex = index + 1
  36.             maxAndMinAreSetted = false
  37.         }
  38.     }
  39.     var answer string
  40.     if result {
  41.         answer = "YES"
  42.     } else {
  43.         answer = "NO"
  44.     }
  45.     writer.WriteString(answer + "\n")
  46. }
  47.  
  48. func max(x int, y int) int {
  49.     if x > y {
  50.         return x
  51.     }
  52.     return y
  53. }
  54.  
  55. func min(x int, y int) int {
  56.     if x < y {
  57.         return x
  58.     }
  59.     return y
  60. }
  61.  
  62. var scanner *bufio.Scanner = bufio.NewScanner(os.Stdin)
  63. var writer *bufio.Writer = bufio.NewWriter(os.Stdout)
  64.  
  65. func ReadString() string {
  66.     scanner.Scan()
  67.     return scanner.Text()
  68. }
  69.  
  70. func ReadInt32() int {
  71.     ans, _ := strconv.Atoi(ReadString())
  72.     return ans
  73. }
Advertisement
Add Comment
Please, Sign In to add comment