/* -*- coding: utf-8 -*- * * 594.cc: No.594 壊れた宝物発見機 - 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 MIN_P = -100; const int MAX_P = 100; const int INF = 1 << 30; /* typedef */ /* global variables */ /* subroutines */ int request(int k, int pk) { putchar('?'); for (int i = 0; i < 3; i++) printf(" %d", (i == k) ? pk : 0); putchar('\n'); fflush(stdout); int d; scanf("%d", &d); return d; } /* main */ int main() { int ps[3]; for (int i = 0; i < 3; i++) { int p0 = MIN_P, p1 = MAX_P; while (p0 + 2 < p1) { int p2 = (p0 * 2 + p1) / 3; int p3 = (p0 + p1 * 2) / 3; int d2 = request(i, p2); int d3 = request(i, p3); if (d2 <= d3) p1 = p3; else p0 = p2; } int mind = INF, minp = 0; for (int p = p0; p <= p1; p++) { int d = request(i, p); if (mind > d) mind = d, minp = p; } ps[i] = minp; } putchar('!'); for (int i = 0; i < 3; i++) printf(" %d", ps[i]); putchar('\n'); fflush(stdout); return 0; }