結果

問題 No.1429 Simple Dowsing
ユーザー toshiro_yanagi
提出日時 2025-04-14 20:17:22
言語 PyPy3
(7.3.15)
結果
TLE  
実行時間 -
コード長 1,105 bytes
コンパイル時間 457 ms
コンパイル使用メモリ 82,188 KB
実行使用メモリ 86,764 KB
最終ジャッジ日時 2025-04-14 20:17:29
合計ジャッジ時間 7,151 ms
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other TLE * 1 -- * 14
権限があれば一括ダウンロードができます

ソースコード

diff #

# %%
N = 100
A = 3
B = 4
m = max(A, B, 10)
# print(f"A={A},B={B}")


def check(flg=False, x=-1, y=-1, m=m):
    for aa in range(m):
        for bb in range(m):
            if flg and not (aa == x and bb == y):
                continue
            a, b = main(False, aa, bb, trg=flg)
            if a != aa or b != bb:
                print("AB", aa, bb)
                print("ab", a, b)
                print()
    if not flg:
        print("Done")


def main(flg=True, a=-1, b=-1, trg=False):
    def f1(r, x, p, q):
        for i in range(1 + N):
            for j in range(1 + N):
                if (i - p) ** 2 + (j - q) ** 2 == r:
                    s[x].add((i, j))

    def f(i, p, q):
        if flg:
            r = int(input())
        else:
            r = (a - p) ** 2 + (b - q) ** 2
        f1(r, i, p, q)
        if flg or trg:
            print("?", p, q)

    s = [set(), set()]
    p, q = 0, 0
    for i in range(2):
        f(i, p, q)
        p, q = 0, 1
    a, b = (s[0] & s[1]).pop()
    if flg or trg:
        print("!", a, b)
    return a, b


main()
# check(False, A, B, m)
# %%
0