제출 #1218366

#제출 시각아이디문제언어결과실행 시간메모리
1218366fastWorm Worries (BOI18_worm)C++20
0 / 100
1 ms460 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...