Submission #702769

#TimeUsernameProblemLanguageResultExecution timeMemory
702769Shreyan_PaliwalWorm Worries (BOI18_worm)C++17
10 / 100
1 ms292 KiB
#include <bits/stdc++.h> using namespace std; int n, m, k, q; int query(int a, int b, int c) { cout << "? " << a << ' ' << b << ' ' << c << endl; int x; cin >> x; return x; } void guess(int a, int b, int c) { cout << "! " << a << ' ' << b << ' ' << c << endl; } void sol_1d() { auto m1 = [&](int a, int b) { return (int)(0.618 * a + 0.382 * b); }; auto m2 = [&](int a, int b) { return (int)(0.382 * a + 0.618 * b); }; int lo = 1, hi = n; int M1 = -1, M2 = -1; int M1_v, M2_v; while (lo < hi) { if (M1 == -1) { M1 = m1(lo, hi); M1_v = query(M1, 1, 1);} if (M2 == -1) { M2 = max(m2(lo, hi), M1 + 1); M2_v = query(M2, 1, 1); } if (M1_v <= M2_v) { // take second half lo = M1 + 1; M1 = M2; M1_v = M2_v; M2 = -1; } else { // take first half hi = M2 - 1; M2 = M1; M2_v = M1_v; M1 = -1; } } guess(lo, 1, 1); return; } void sol_2d() { cout << "SOL 2D" << endl; } void sol_3d() { cout << "SOL 3D" << endl; } int main() { cin >> n >> m >> k >> q; if (m == 1 && k == 1) { sol_1d(); return 0; } if (m == 1) { sol_2d(); return 0; } sol_3d(); return 0; }
#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...