#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define N 400005
#define ff first
#define ss second
#define pb push_back
#define sz(s) (int)s.size()
ll n, p, k, answer, q, x1, x2, x3, ans, w;
int b[] = {1,-1,0,0,0,0,0};
int c[] = {0,0,1,-1,0,0,0};
int d[] = {0,0,0,0,1,-1,0};
int main () {
cin >> n >> p >> k >> q;
x1 = (n + 1)/2;
x2 = (p + 1)/2;
x3 = (k + 1)/2;
ll a[n+1][p+1][k+1];
memset(a,0,sizeof a);
while(1) {
for(int i = 0; i < 7; i++) {
if(x1 + b[i] < 1 || x2 + c[i] < 1 || x3 + d[i] < 1) continue;
if(x1 + b[i] > n || x2 + c[i] > p || x3 + d[i] > k) continue;
if(!a[x1+b[i]][x2+c[i]][x3+d[i]]) {
cout << "? "<< x1 + b[i] << " " << x2 + c[i] << " " << x3 + d[i];
fflush(stdout);
cin >> a[x1 + b[i]][x2 + c[i]][x3 + d[i]];
}
}
ans = w = 0;
for(int i = 0; i < 7; i++) {
if(x1 + b[i] < 1 || x2 + c[i] < 1 || x3 + d[i] < 1) continue;
if(x1 + b[i] > n || x2 + c[i] > p || x3 + d[i] > k) continue;
if(ans <= a[x1 + b[i]][x2 + c[i]][x3 + d[i]]) w = i;
ans = max(ans,a[x1 + b[i]][x2 + c[i]][x3 + d[i]]);
}
if(w == 6) {
cout << "! " << x1 <<" " << x2 << " " << x3;
fflush(stdout);
return 0;
}
x1 += b[w];
x2 += c[w];
x3 += d[w];
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |