← Home
For problem statement at 0-999/600-699/690-699/696/problemA.txt this is a correct solution, but verifier at 0-999/600-699/690-699/696/verifierA.go ends with All tests passed can you fix the verifier? package main

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

func main() {
	scanner := bufio.NewScanner(os.Stdin)
	scanner.Split(bufio.ScanWords)
	writer := bufio.NewWriter(os.Stdout)
	defer writer.Flush()

	if !scanner.Scan() {
		return
	}
	q, _ := strconv.Atoi(scanner.Text())

	weights := make(map[int64]int64)

	for i := 0; i < q; i++ {
		scanner.Scan()
		op, _ := strconv.Atoi(scanner.Text())

		if op == 1 {
			scanner.Scan()
			v, _ := strconv.ParseInt(scanner.Text(), 10, 64)
			scanner.Scan()
			u, _ := strconv.ParseInt(scanner.Text(), 10, 64)
			scanner.Scan()
			w, _ := strconv.ParseInt(scanner.Text(), 10, 64)

			for v != u {
				if v > u {
					weights[v] += w
					v /= 2
				} else {
					weights[u] += w
					u /= 2
				}
			}
		} else if op == 2 {
			scanner.Scan()
			v, _ := strconv.ParseInt(scanner.Text(), 10, 64)
			scanner.Scan()
			u, _ := strconv.ParseInt(scanner.Text(), 10, 64)

			var ans int64
			for v != u {
				if v > u {
					ans += weights[v]
					v /= 2
				} else {
					ans += weights[u]
					u /= 2
				}
			}
			fmt.Fprintln(writer, ans)
		}
	}
}