For problem statement at 2000-2999/2000-2099/2030-2039/2036/problemG.txt this is a correct solution, but verifier at 2000-2999/2000-2099/2030-2039/2036/verifierG.go ends with failed to parse candidate output: unexpected token "xor" (queries are not allowed)
output:
xor 1 6
xor 1 3
xor 1 1
ans 5 6 1
xor 1 3
xor 1 1
xor 1 2
ans 2 1 2
xor 1 10
xor 1 5
xor 1 2
ans 9 12 4
xor 1 100
xor 1 50
xor 1 25
ans 30 10 30
xor 1 10000
xor 1 5000
xor 1 2500
ans 5000 13447 9998
xor 1 1000000000000
xor 1 500000000000
xor 1 250000000000
ans 345678901 425827559 178320839
xor 1 999999999999999999
xor 1 499999999999999999
xor 1 249999999999999999
ans 333333333333333333 555421638206797531 189084219578815049
xor 1 958807328056864332
xor 1 479403664028432166
xor 1 239701832014216083
ans 140884652525312196 375181903259028273 1089421145001192698
xor 1 2684963042023055
xor 1 1342481521011527
xor 1 671240760505763
ans 16628845502288 954596661985587 1087745829949087
xor 1 415596997722019248
xor 1 207798498861009624
xor 1 103899249430504812
ans 244655257986410332 186620735901166855 137347450444830884
xor 1 434760372138369308
xor 1 217380186069184654
xor 1 108690093034592327
ans 191514449406796004 528452732857661879 499243283182575453
xor 1 113700067226617650
xor 1 56850033613308825
xor 1 28425016806654412
ans 47578427778089286 19476141703878434 133427624017816679
xor 1 53476785842677575
xor 1 26738392921338787
xor 1 13369196460669393
ans 20781766901942363 15215746121021335 20299522971025240
xor 1 967549502523310868
xor 1 483774751261655434
xor 1 241887375630827717
ans 858143178060016677 807234210903059755 687267930379381164
xor 1 91403983822505212
xor 1 45701991911252606
xor 1 22850995955626303
ans 36177612685633794 123057271695046755 16902176896527865
xor 1 206036266904849521
xor 1 103018133452424760
xor 1 51509066726212380
ans 137466261995779253 60752756108697975 58252167429756963
xor 1 895216789866802396
xor 1 447608394933401198
xor 1 223804197466700599
ans 572827344948752709 483654188072364148 555498857411587771
xor 1 701000339933600222
xor 1 350500169966800111
xor 1 175250084983400055
ans 319088333556701845 134554948174180703 925092786608695639
xor 1 365670878207392370
xor 1 182835439103696185
xor 1 91417719551848092
ans 26317907009376017 159765451110787008 461524316222276322
xor 1 136205400635693282
xor 1 68102700317846641
xor 1 34051350158923320
ans 105245182304050784 92205274985097759 79371035738379162
xor 1 598218065941746777
xor 1 299109032970873388
xor 1 149554516485436694
ans 161939960638106456 373020943203290074 356128718649563880
xor 1 87268432715772236
xor 1 43634216357886118
xor 1 21817108178943059
ans 13307888787395973 68185567990354993 45311076666540701
xor 1 73941457008436939
xor 1 36970728504218469
xor 1 18485364252109234
ans 34966579897967225 45132523113751933 57299177960456197
xor 1 652468487978488872
xor 1 326234243989244436
xor 1 163117121994622218
ans 88009345956583222 82243987080474490 287629853753606849
xor 1 829207558944744117
xor 1 414603779472372058
xor 1 207301889736186029
ans 505363034314054626 1059659762586968874 843275087208573050
xor 1 990348345667778589
xor 1 495174172833889294
xor 1 247587086416944647
ans 431877358832017919 72800136188546933 251319250042487635
xor 1 16846099598364466
xor 1 8423049799182233
xor 1 4211524899591116
ans 5655126243579357 16051722414011974 9663831621834086
exit status 1 can you fix the verifier? package main
import (
"bufio"
"fmt"
"os"
)
func main() {
reader := bufio.NewReader(os.Stdin)
writer := bufio.NewWriter(os.Stdout)
defer writer.Flush()
var t int
fmt.Fscan(reader, &t)
for i := 0; i < t; i++ {
solve(reader, writer)
}
}
type Item struct {
L, R, fL, fR int64
}
func solve(reader *bufio.Reader, writer *bufio.Writer) {
var n int64
fmt.Fscan(reader, &n)
query := func(x int64) int64 {
fmt.Fprintf(writer, "xor 1 %d\n", x)
writer.Flush()
var res int64
fmt.Fscan(reader, &res)
if res == -1 {
os.Exit(0)
}
return res
}
S := query(n)
pos := make(map[int64]int64)
M := []int64{}
addVal := func(x, val int64) {
if val != 0 && val != S {
if _, exists := pos[val]; !exists {
pos[val] = x
M = append(M, val)
}
}
}
queue := []Item{}
if S == 0 {
last_x := n
last_val := int64(0)
for k := 60; k >= 1; k-- {
x := (int64(1) << k) - int64(1)
if x >= n {
continue
}
val := query(x)
addVal(x, val)
if val != 0 {
queue = append(queue, Item{0, x, 0, val})
queue = append(queue, Item{x, last_x, val, 0})
break
}
last_x = x
last_val = val
_ = last_val
}
} else {
queue = append(queue, Item{0, n, 0, S})
}
for len(queue) > 0 && len(M) < 2 {
item := queue[0]
queue = queue[1:]
if item.fL == item.fR {
continue
}
if item.R-item.L <= 1 {
continue
}
mid := item.L + (item.R-item.L)/2
val := query(mid)
addVal(mid, val)
if len(M) >= 2 {
break
}
queue = append(queue, Item{item.L, mid, item.fL, val})
queue = append(queue, Item{mid, item.R, val, item.fR})
}
v1 := M[0]
v2 := M[1]
if pos[v1] > pos[v2] {
v1, v2 = v2, v1
}
a := v1
b := v1 ^ v2
c := v2 ^ S
fmt.Fprintf(writer, "ans %d %d %d\n", a, b, c)
writer.Flush()
}