Submission #169217

#TimeUsernameProblemLanguageResultExecution timeMemory
169217davitmargCave (IOI13_cave)C++17
Compilation error
0 ms0 KiB
/*DavitMarg*/ #include <iostream> #include <algorithm> #include <cmath> #include <vector> #include <string> #include <cstring> #include <map> #include <set> #include <queue> #include <iomanip> #include <bitset> #include <stack> #include <cassert> #include <iterator> #include <fstream> #define mod 1000000007ll #define LL long long #define LD long double #define MP make_pair #define PB push_back #define all(v) v.begin(), v.end() using namespace std; const int N = 5005; #ifndef death #include "cave.h" #endif #ifdef death int tryCombination(vector<int> a) { cout << "? "; for (int i = 0; i < a.size(); i++) cout << a[i]; cout << endl; int ans; cin >> ans; return ans; } void answer(vector<int> a, vector<int> d) { cout << "! "; for (int i = 0; i < a.size(); i++) cout << a[i]; cout << endl; cout << "! "; for (int i = 0; i < a.size(); i++) cout << d[i] << " "; cout << endl; } #endif // death int n, used[N]; vector<int> a, p; vector<int> norm(vector<int> x) { while (x.size() < n) x.PB(0); for (int i = 0; i < x.size(); i++) if (used[i]) x[i] = a[i]; return x; } void explore(int L) { n = L; a.resize(n); p.resize(n); for (int I = 0; I < n; I++) { int l=0, r=n-1, m,pos=-1; vector<int> x(n,0); int val = tryCombination(norm(x)); if (val == -1) { for (int i = 0; i < n; i++) x[i] ^= 1; val = tryCombination(norm(x)); } while (l <= r) { int m = (l + r) / 2; for (int i = m + 1; i < n; i++) x[i] ^= 1; int newval = tryCombination(norm(x)); /*cout << l << " : " << r << " = "<< newval << endl;*/ if (l == r) { pos = l; if (-1 == newval) { x[l] ^= 1; newval = tryCombination(norm(x)); } val = newval; break; } if (newval == val) r = m; else { l = m + 1; if (newval == -1) { for (int i = m + 1; i < n; i++) x[i] ^= 1; newval = tryCombination(norm(x)); } val = newval; } } while (used[pos]) pos--; used[pos] = 1; a[pos] = !x[pos]; p[pos] = val; } answer(a, p); } #ifdef death int main() { int L; cin >> L; explore(L); return 0; } #endif /* */

Compilation message (stderr)

cave.cpp: In function 'std::vector<int> norm(std::vector<int>)':
cave.cpp:65:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  while (x.size() < n)
         ~~~~~~~~~^~~
cave.cpp:67:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 0; i < x.size(); i++)
                  ~~^~~~~~~~~~
cave.cpp: In function 'void explore(int)':
cave.cpp:83:35: error: cannot convert 'std::vector<int>' to 'int*' for argument '1' to 'int tryCombination(int*)'
   int val = tryCombination(norm(x));
                                   ^
cave.cpp:89:32: error: cannot convert 'std::vector<int>' to 'int*' for argument '1' to 'int tryCombination(int*)'
    val = tryCombination(norm(x));
                                ^
cave.cpp:98:39: error: cannot convert 'std::vector<int>' to 'int*' for argument '1' to 'int tryCombination(int*)'
    int newval = tryCombination(norm(x));
                                       ^
cave.cpp:107:37: error: cannot convert 'std::vector<int>' to 'int*' for argument '1' to 'int tryCombination(int*)'
      newval = tryCombination(norm(x));
                                     ^
cave.cpp:122:37: error: cannot convert 'std::vector<int>' to 'int*' for argument '1' to 'int tryCombination(int*)'
      newval = tryCombination(norm(x));
                                     ^
cave.cpp:80:19: warning: unused variable 'm' [-Wunused-variable]
   int l=0, r=n-1, m,pos=-1;
                   ^
cave.cpp:135:13: error: cannot convert 'std::vector<int>' to 'int*' for argument '1' to 'void answer(int*, int*)'
  answer(a, p);
             ^