Submission #537457

#TimeUsernameProblemLanguageResultExecution timeMemory
537457surguttiWorm 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 =#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;
        }
    }
} 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:60:38: error: stray '#' in program
   60 |                         int cur_val =#pragma GCC optimize ("Ofast,inline,unroll-loops")
      |                                      ^
worm.cpp:114:2: error: extended character   is not valid in an identifier
  114 |         if (a[p[0]].second - a[p[0]].first <= 2) {
      |  ^
worm.cpp:114:5: error: extended character   is not valid in an identifier
  114 |         if (a[p[0]].second - a[p[0]].first <= 2) {
      |    ^
worm.cpp:114:8: error: extended character   is not valid in an identifier
  114 |         if (a[p[0]].second - a[p[0]].first <= 2) {
      |      ^
worm.cpp:114:11: error: extended character   is not valid in an identifier
  114 |         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:60:39: error: 'pragma' was not declared in this scope; did you mean '_Pragma'?
   60 |                         int cur_val =#pragma GCC optimize ("Ofast,inline,unroll-loops")
      |                                       ^~~~~~
      |                                       _Pragma
worm.cpp:71:46: error: a function-definition is not allowed here before '{' token
   71 | int get(vector<int> pos, bool print = false) {
      |                                              ^
worm.cpp:96:12: error: a function-definition is not allowed here before '{' token
   96 | int main() {
      |            ^
worm.cpp:65:5: warning: unused variable 'N' [-Wunused-variable]
   65 | int N, M, K, Q;
      |     ^
worm.cpp:65:8: warning: unused variable 'M' [-Wunused-variable]
   65 | int N, M, K, Q;
      |        ^
worm.cpp:65:11: warning: unused variable 'K' [-Wunused-variable]
   65 | int N, M, K, Q;
      |           ^
worm.cpp:65:14: warning: unused variable 'Q' [-Wunused-variable]
   65 | int N, M, K, Q;
      |              ^