Submission #729807

#TimeUsernameProblemLanguageResultExecution timeMemory
7298072vasCombo (IOI18_combo)C++17
Compilation error
0 ms0 KiB
// Source: https://usaco.guide/general/io

#include <bits/stdc++.h>
using namespace std;


string guess_sequence(int N) {
	// get first letter
	int n = N;
	
	char first;
	char other[3];

	if (press("AB")) {
		if (press("A")) {
			first = 'A';
			other[0] = 'B';
			other[1] = 'X';
			other[2] = 'Y';
		} else {
			first = 'B';
			other[0] = 'A';
			other[1] = 'X';
			other[2] = 'Y';
		}
	} else {
		if (press("X")) {
			first = 'X';
			other[0] = 'B';
			other[1] = 'A';
			other[2] = 'Y';
		} else {
			first = 'Y';
			other[0] = 'A';
			other[1] = 'X';
			other[2] = 'B';
		}
	}

	string s = "" + first;

	while (s.length() < n - 1) {
		string p = s + other[0] + other[1];
		p += s + other[0] + other[2];
		p += s + other[1] + other[2];
		int v = press(p);

		if (v == 0 + s.length()) {
			s += other[2];
			continue;
		}

		if (v == 1 + s.length()) {
			p = s + other[1] + other[1];
			v = press(p);
			if (v == 0 + s.length()) {
				s += other[0] + other[0];
			} else if (v == 1 + s.length()) {
				s += other[1] + other[0];
			} else {
				assert(v == 2 + s.length());
				s += other[1] + other[1];
			}
			continue;
		}

		if (v == 2 + s.length()) {
			p = s + other[0] + other[1];
			v = press(p);
			if (v == 0 + s.length()) {
				s += other[1] + other[2];
			} else if (v == 1 + s.length()) {
				s += other[0] + other[2];
			} else {
				assert(v == 2 + s.length());
				s += other[0] + other[1];
			}
			continue;
		}
	}

	if (s.length() == n) {
		return s;
	}


	if (press(s + other[0] + s + other[1]) == n) {
		if (press(s + other[0]) == n) {
			s += other[0];
		} else {
			s += other[1];
		}
	} else {
		s += other[2];
	}

	return s;

}

Compilation message (stderr)

combo.cpp: In function 'std::string guess_sequence(int)':
combo.cpp:14:6: error: 'press' was not declared in this scope
   14 |  if (press("AB")) {
      |      ^~~~~
combo.cpp:42:20: warning: comparison of integer expressions of different signedness: 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   42 |  while (s.length() < n - 1) {
      |         ~~~~~~~~~~~^~~~~~~
combo.cpp:46:11: error: 'press' was not declared in this scope
   46 |   int v = press(p);
      |           ^~~~~
combo.cpp:48:9: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   48 |   if (v == 0 + s.length()) {
      |       ~~^~~~~~~~~~~~~~~~~
combo.cpp:53:9: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   53 |   if (v == 1 + s.length()) {
      |       ~~^~~~~~~~~~~~~~~~~
combo.cpp:56:10: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   56 |    if (v == 0 + s.length()) {
      |        ~~^~~~~~~~~~~~~~~~~
combo.cpp:58:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   58 |    } else if (v == 1 + s.length()) {
      |               ~~^~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/10/cassert:44,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:33,
                 from combo.cpp:3:
combo.cpp:61:14: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   61 |     assert(v == 2 + s.length());
      |            ~~^~~~~~~~~~~~~~~~~
combo.cpp:67:9: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   67 |   if (v == 2 + s.length()) {
      |       ~~^~~~~~~~~~~~~~~~~
combo.cpp:70:10: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   70 |    if (v == 0 + s.length()) {
      |        ~~^~~~~~~~~~~~~~~~~
combo.cpp:72:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   72 |    } else if (v == 1 + s.length()) {
      |               ~~^~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/10/cassert:44,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:33,
                 from combo.cpp:3:
combo.cpp:75:14: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   75 |     assert(v == 2 + s.length());
      |            ~~^~~~~~~~~~~~~~~~~
combo.cpp:82:17: warning: comparison of integer expressions of different signedness: 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   82 |  if (s.length() == n) {
      |      ~~~~~~~~~~~^~~~
combo.cpp:87:6: error: 'press' was not declared in this scope
   87 |  if (press(s + other[0] + s + other[1]) == n) {
      |      ^~~~~