/* -*- coding: utf-8 -*- * * 1429.cc: No.1429 Simple Dowsing - yukicoder */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; /* constant */ const int MAX_P = 100; const int MAX_Q = 100; /* typedef */ /* global variables */ int query(int p, int q) { printf("? %d %d\n", p, q); fflush(stdout); int d; scanf("%d", &d); return d; } int d2(int dx, int dy) { return dx * dx + dy * dy; } /* subroutines */ /* main */ int main() { int d0 = query(0, 0); int d1 = query(MAX_P, 0); for (int x = 0; x <= MAX_P; x++) for (int y = 0; y <= MAX_Q; y++) if (d2(x, y) == d0 && d2(x - MAX_P, y) == d1) { printf("! %d %d\n", x, y); fflush(stdout); return 0; } return 0; }