Submission #1043222

#TimeUsernameProblemLanguageResultExecution timeMemory
1043222model_codeLight Bulbs (EGOI24_lightbulbs)Pypy 3
80.52 / 100
256 ms30304 KiB
import random

N = int(input())

px = list(range(N))
py = list(range(N))
random.seed(42)
random.shuffle(px)
random.shuffle(py)


def query(type, points):
    print(type)
    for y in range(N):
        print(''.join('1' if (py[y], px[x]) in points else '0' for x in range(N)))
    return int(input()) if type == '?' else None


hor = set()
ver = set()

res = query('?', {(0,0), (0,1), (0,2)})
if res == 3*N:
    ver.add((0,0))
elif res == N:
    hor.add((0,0))
else:
    res2 = query('?', {(0,1), (0,2)})
    if res2 == 2*N:
        hor.add((0,0))
    elif res2 == N:
        ver.add((0,0))
    elif res == 2*N-1:
        hor.add((0,0))
    else:
        ver.add((0,0))

y = x = 0
last = 'H' if hor else 'V'

while len(hor) < N and len(ver) < N:
    q = [(y,x)]
    if last == 'H':
        y += 1
    else:
        x += 1
    q.append((y,x))
    res = query('?', q)
    if res == 2*N:
        if last == 'H':
            hor.add((y,x))
        else:
            ver.add((y,x))
    else:
        if last == 'H':
            ver.add((y,x))
            last = 'V'
        else:
            hor.add((y,x))
            last = 'H'

query('!', hor if len(hor) == N else ver)
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...