Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "bufio"
- "fmt"
- "os"
- "sort"
- "strconv"
- "strings"
- )
- func processFromSmallestToBiggestVal(a, b []int) {
- n := len(a)
- position := make([]int, n)
- for i := 0; i < n; i++ {
- position[i] = i
- }
- sort.Slice(position, func(i, j int) bool {
- return b[position[i]] < b[position[j]]
- })
- for i := 0; i < n; i++ {
- pos := position[i]
- nextPos := (pos + 1) % n
- prevPos := (pos - 1 + n) % n
- maxOperations := max(0, (a[pos]-max(a[prevPos], a[nextPos])+1)/3)
- numOperations := min(maxOperations, max(0, (a[pos]-b[pos])/2))
- a[pos] -= 2 * numOperations
- a[prevPos] += numOperations
- a[nextPos] += numOperations
- }
- }
- func checkIfTheyAreEqual(a, b []int) bool {
- n := len(a)
- for i := 0; i < n; i++ {
- if a[i] != b[i] {
- return false
- }
- }
- return true
- }
- func main() {
- in := bufio.NewReader(os.Stdin)
- _ = readInt(in)
- a := readArrInt(in)
- b := readArrInt(in)
- processFromSmallestToBiggestVal(a, b)
- if checkIfTheyAreEqual(a, b) {
- fmt.Println("Yes")
- } else {
- fmt.Println("No")
- }
- }
- func readInt(in *bufio.Reader) int {
- nStr, _ := in.ReadString('\n')
- nStr = strings.ReplaceAll(nStr, "\r", "")
- nStr = strings.ReplaceAll(nStr, "\n", "")
- n, _ := strconv.Atoi(nStr)
- return n
- }
- func readLineNumbs(in *bufio.Reader) []string {
- line, _ := in.ReadString('\n')
- line = strings.ReplaceAll(line, "\r", "")
- line = strings.ReplaceAll(line, "\n", "")
- numbs := strings.Split(line, " ")
- return numbs
- }
- func readArrInt(in *bufio.Reader) []int {
- numbs := readLineNumbs(in)
- arr := make([]int, len(numbs))
- for i, n := range numbs {
- val, _ := strconv.Atoi(n)
- arr[i] = val
- }
- return arr
- }
- func readArrInt64(in *bufio.Reader) []int64 {
- numbs := readLineNumbs(in)
- arr := make([]int64, len(numbs))
- for i, n := range numbs {
- val, _ := strconv.ParseInt(n, 10, 64)
- arr[i] = val
- }
- return arr
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement