Submission #1172490

#TimeUsernameProblemLanguageResultExecution timeMemory
1172490versesrevCombo (IOI18_combo)C++20
Compilation error
0 ms0 KiB
// 17:31

#include <string>
#include <vector>
#include <functional>
#include <cassert>

std::string guess_sequence (int N) {
  std::vector<char> cs{'a', 'b', 'x', 'y'};
  char start = std::invoke([&]{
    int v1 = press("ab");
    if (v1 == 1) {
      if (press("a") == 1) return 'a';
      else return 'b';
    }
    else {
      if (press("x") == 1) return 'x';
      else return 'y';
    }
  });
  
  std::erase(cs, start);
  
  std::string ans;
  ans += start;
  for (int i = 1; i < N - 1; ++i) {
    std::string query = ans + cs[0];
    query += ans + cs[1] + cs[0];
    query += ans + cs[1] + cs[1];
    query += ans + cs[1] + cs[2];
    int val = press(query);
    if (val == ans.length()) {
      ans += cs[2];
    }
    else if (val == ans.length() + 1) {
      ans += cs[0];
    }
    else {
      assert(val == ans.length() + 2);
      ans += cs[1];
    }
  }
  
  std::string query = ans + cs[0] + ans + cs[1];
  if (press(query) == N - 1) {
    ans += cs[2];
  }
  else if(press(ans + cs[0]) == N) {
    ans += cs[0];
  }
  else {
    ans += cs[1];
  }
  return ans;
}

Compilation message (stderr)

combo.cpp: In lambda function:
combo.cpp:11:14: error: 'press' was not declared in this scope
   11 |     int v1 = press("ab");
      |              ^~~~~
combo.cpp: In function 'std::string guess_sequence(int)':
combo.cpp:31:15: error: 'press' was not declared in this scope
   31 |     int val = press(query);
      |               ^~~~~
combo.cpp:45:7: error: 'press' was not declared in this scope
   45 |   if (press(query) == N - 1) {
      |       ^~~~~
combo.cpp: In lambda function:
combo.cpp:20:3: warning: control reaches end of non-void function [-Wreturn-type]
   20 |   });
      |   ^