Submission #537459

#TimeUsernameProblemLanguageResultExecution timeMemory
537459surguttiWorm Worries (BOI18_worm)C++14
Compilation error
0 ms0 KiB
#pragma GCC optimize ("Ofast,inline,unroll-loops")
#include <bits/stdc++.h>
 
using namespace std;
 
int N, M, K, Q;
 
vector<int> p{0, 1, 2};
 
vector<vector<vector<int>>> safe;
 
int get(vector<int> pos, bool print = false) {
 
    vector<int> xyz(3);
 
    for (int i = 0; i < 3; i++) {
        xyz[p[i]] = pos[i];
    }
 
    int x = xyz[0];
    int y = xyz[1];
    int z = xyz[2];
    
    if (print) {
        cout << "! " << x << ' ' << y << ' ' << z << endl;
        return -1;
    }
 
    if (!safe[x][y][z]) {
        cout << "? " << x << ' ' << y << ' ' << z << endl;
        cin >> safe[x][y][z];
    }
 
    return safe[x][y][z];
}
 
int main() {
    // ios::sync_with_stdio(false), cin.tie(nullptr);  
 
    cin >> N >> M >> K >> Q;
 
    safe.resize(N + 1, vector(M + 1, vector<int>(K + 1)));
    
    vector<pair<int, int>> a = {{1, N}, {1, M}, {1, K}};
 
    while (true) {
 
        sort(p.begin(), p.end(), [&a](int i, int j) {
            return a[i].second - a[i].first > a[j].second - a[j].first;
        });
 
        int max_val = -1;
        vector<int> max_pos;
 
        if (a[p[0]].second - a[p[0]].first <= 2) {
            
            for (int i = a[p[0]].first; i <= a[p[0]].second; i++) {
                for (int j = a[p[1]].first; j <= a[p[1]].second; j++) {
                    for (int k = a[p[2]].first; k <= a[p[2]].second; k++) {
                        int cur_val = get({i, j, k});
 
                        if (cur_val > max_val) {
                            max_val = cur_val;
                            max_pos = {i, j, k};
                        }
                    }
                }
            }
        
            get(max_pos, true);
            
            return 0;
        }
 
        int m = (a[p[0]].first + a[p[0]].second) >> 1;
        
        for (int i = a[p[1]].first; i <= a[p[1]].second; i++) {
            for (int j = a[p[2]].first; j <= a[p[2]].second; j++) {
                int cur_val = get({m, i, j});
                
                if (cur_val > max_val) {
                    max_val = cur_val;
                    max_pos = {m, i, j};
                }
            }
        }
 
        vector<int> L_pos = max_pos;
        vector<int> R_pos = max_pos;
 
        L_pos[0]--;
        R_pos[0]++;
 
        if (get(L_pos) < get(R_pos)) {
            a[p[0]].first = m;
        }
        else {
            a[p[0]].second = m;
        }
    }
}

Compilation message (stderr)

worm.cpp:55:2: error: extended character   is not valid in an identifier
   55 |         if (a[p[0]].second - a[p[0]].first <= 2) {
      |  ^
worm.cpp:55:5: error: extended character   is not valid in an identifier
   55 |         if (a[p[0]].second - a[p[0]].first <= 2) {
      |    ^
worm.cpp:55:8: error: extended character   is not valid in an identifier
   55 |         if (a[p[0]].second - a[p[0]].first <= 2) {
      |      ^
worm.cpp:55:11: error: extended character   is not valid in an identifier
   55 |         if (a[p[0]].second - a[p[0]].first <= 2) {
      |        ^
worm.cpp: In function 'int main()':
worm.cpp:42:30: error: missing template arguments before '(' token
   42 |     safe.resize(N + 1, vector(M + 1, vector<int>(K + 1)));
      |                              ^
worm.cpp:55:2: error: '\U000000a0' was not declared in this scope
   55 |         if (a[p[0]].second - a[p[0]].first <= 2) {
      |  ^