Submission #1260026

#TimeUsernameProblemLanguageResultExecution timeMemory
1260026SzymonKrzywdaWorm Worries (BOI18_worm)C++20
10 / 100
0 ms436 KiB
#include <iostream>
#include <map>

using namespace std;


map<int, int> queries;



int ask(int x, int y = 1, int z = 1) {
    if (queries.find(x) != queries.end()) return queries[x];
    cout << "? " << x << ' ' << y << ' ' << z << endl;
    cin >> queries[x];
    return queries[x];
}

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    int q, n, m, k;

    cin >> n >> m >> k >> q;
    
    int left = 1, right = n;

    while (right - left > 3) {
        int mid1 = left + (right - left) / (1 + 1.61803399);
        int mid2 = right - (right - left) / (1 + 1.61803399);
        int val1 = ask(mid1);
        int val2 = ask(mid2);

        if (val1 <= val2) left = mid1 + 1;
        else right = mid2 - 1;
    }

    int maxi = 0, pos = left;

    for (int i = left; i <= right; i ++ ) {
        int val = ask(i);
        if (val > maxi) pos = i;
        maxi = max(maxi, val);
    }

    cout << "! " << pos << ' ' << 1 << ' ' << 1 << '\n'; 


    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...