Submission #645343

#TimeUsernameProblemLanguageResultExecution timeMemory
645343mychecksedadWorm Worries (BOI18_worm)C++17
10 / 100
70 ms464 KiB
/* Author : Mychecksdead */
#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
typedef long double ld;
#define MOD (1000000000+7)
#define MOD1 (998244353)
#define PI 3.1415926535
#define pb push_back
#define setp() cout << setprecision(15)
#define all(x) x.begin(), x.end()
#define debug(x) cerr << #x << " is " << x << '\n';
const int N = 1e6+100, M = 1e5+10, F = 2147483646, K = 20;



int n, m, k, q, qq = 0;
int query(int x, int y, int z){
    if(x == 0 || x == n + 1 || y == 0 || y == m + 1) return 0;
    cout << "? " << x << ' ' << y << ' ' << z << endl;
    int a; cin >> a;
    assert(a!=-1);
    return a;
}

void solve(){
    cin >> n >> m >> k >> q;
    for(int i = 1; i <= m; ++i){
        int l = 1, r = n;
        while(l <= r){
            int mi = (l + r) >> 1;

            int q = query(mi - 1, i, 1);
            int q1 = query(mi, i, 1);

            if(q >= q1){
                r = mi - 1;
                continue;
            }
            int q2 = query(mi + 1, i, 1);
            if(q <= q1 && q1 >= q2){
                int up = query(mi, i - 1, 1);
                int down = query(mi, i + 1, 1);
                if(up <= q1 && down <= q1){
                    cout << "! " << mi << ' ' << i << ' ' << 1 << endl;
                    return;
                }
                break;
            }
            if(q <= q1 && q1 <= q2){
                l = mi + 1;
            }else if(q2 <= q1 && q1 <= q){
                r = mi - 1;
            }else{
                r = mi - 1;
            }
        }
    }
    cout << "! " << 1 << ' ' << 1 << ' ' << 1 <<  endl;
}





int main(){
    cin.tie(0); ios::sync_with_stdio(0);
    int T = 1, aa;
    // cin >> T;aa=T;
    while(T--){
        // cout << "Case #" << aa-T << ": ";
        solve();
        cout << '\n';
    }
    return 0;
 
}

Compilation message (stderr)

worm.cpp: In function 'int main()':
worm.cpp:68:16: warning: unused variable 'aa' [-Wunused-variable]
   68 |     int T = 1, aa;
      |                ^~
#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...