#include "bits/stdc++.h"
using namespace std;
#define vec vector
#define int long long
#define all(x) (x).begin(), (x).end()
const int mod = 1e9 + 7;
const int inf = LLONG_MAX;
using pii = pair<int, int>;
int n, m, k, q;
int cache[1000'100] = {0};
bool done[1000'100] = {false};
int ask(int x) {
if (x < 1 || x > n) return 0;
if (done[x]) return cache[x];
done[x] = true;
cout << "? " << x << " 1 1\n";
cout.flush();
done[x] = true;
cin >> x;
return cache[x] = x;
}
int ans(int x) {
cout << "! " << x << " 1 1\n";
cout.flush();
exit(0);
}
enum Slope {
Increasing,
Decreasing,
};
Slope slope(int x) {
int a = ask(x - 1);
int b = ask(x);
int c = ask(x + 1);
if (b >= a && b >= c) ans(x);
if (a <= b && b <= c) return Increasing;
if (a >= b && b >= c) return Decreasing;
assert(false);
}
int solve(int a, int b) {
if (b - a + 1 <= 100) {
for(int i = a; i <= b; i++) slope(i);
}
int mid = (a + b) / 2;
if (slope(mid) == slope(a)) return solve(mid, b);
else return solve(a, mid);
}
signed main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> m >> k >> q;
slope(1);
slope(n);
}
# | 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... |