Submission #99132

#TimeUsernameProblemLanguageResultExecution timeMemory
99132JustasLeCombo (IOI18_combo)C++17
Compilation error
0 ms0 KiB
// #include "combo.h"
#include <bits/stdc++.h>
 
using namespace std;
 
string guess_sequence(int N) {
	set<char> X = {'A', 'B', 'X', 'Y'};
	string s = "";
	for (auto it = X.begin(); it != X.end(); it++) {
		int x = press(s + *it);
		if (x != 0) {
			s += *it;
			X.erase(it);
			break; 
		}
	}
	if (s == "") {
		return s;
	}
	int prev = 1;
	while (true) {
		int sz = (int) s.size(), c = 0;
		if (sz == N) {
			break;
		}
		if (sz == N - 1) {
			for (auto it = X.begin(); it != X.end(); it++, c++) {
				if (c == 2) {
					return s + *it;
				}
				string poss = s + *it;
				int x = press(poss);
				if (x > prev) {
					return poss;
				}
			}
		}
		// vector<string> extraX = {"XX", "XY", "XB"};
		// vector<string> extraA = {"AX", "AY", "AB"};
		// vector<string> extraB = {"BA", "BX", "BY"};
		// vector<string> extraY = {"YX", "YA", "YB"};
		if (s[0] == 'A') {
			int x = press(s + "Y" + s + "XX" + s + "XY" + s + "XB");
			if (x == prev) {
				s += 'B';
				prev++;
				continue;
			} else {
				if (x == prev + 1) {
					s += "Y";
					prev++;
					continue;
				} else {
					s += "X";
					prev++;
					continue;
				}
			}
		}
		if (s[0] == 'B') {
			int x = press(s + "Y" + s + "XX" + s + "XY" + s + "XA");
			if (x == prev) {
				s += 'A';
				prev++;
				continue;
			} else {
				if (x == prev + 1) {
					s += "Y";
					prev++;
					continue;
				} else {
					s += "X";
					prev++;
					continue;
				}
			}
		}
		if (s[0] == 'X') {
			int x = press(s + "Y" + s + "BB" + s + "BY" + s + "BA");
			if (x == prev) {
				s += 'A';
				prev++;
				continue;
			} else {
				if (x == prev + 1) {
					s += "Y";
					prev++;
					continue;
				} else {
					s += "B";
					prev++;
					continue;
				}
			}
		}
		if (s[0] == 'Y') {
			int x = press(s + "B" + s + "XX" + s + "XB" + s + "XA");
			if (x == prev) {
				s += 'A';
				prev++;
				continue;
			} else {
				if (x == prev + 1) {
					s += "B";
					prev++;
					continue;
				} else {
					s += "X";
					prev++;
					continue;
				}
			}
		}
	}
	return s;
}

Compilation message (stderr)

combo.cpp: In function 'std::string guess_sequence(int)':
combo.cpp:10:11: error: 'press' was not declared in this scope
   10 |   int x = press(s + *it);
      |           ^~~~~
combo.cpp:32:13: error: 'press' was not declared in this scope
   32 |     int x = press(poss);
      |             ^~~~~
combo.cpp:43:12: error: 'press' was not declared in this scope
   43 |    int x = press(s + "Y" + s + "XX" + s + "XY" + s + "XB");
      |            ^~~~~
combo.cpp:61:12: error: 'press' was not declared in this scope
   61 |    int x = press(s + "Y" + s + "XX" + s + "XY" + s + "XA");
      |            ^~~~~
combo.cpp:79:12: error: 'press' was not declared in this scope
   79 |    int x = press(s + "Y" + s + "BB" + s + "BY" + s + "BA");
      |            ^~~~~
combo.cpp:97:12: error: 'press' was not declared in this scope
   97 |    int x = press(s + "B" + s + "XX" + s + "XB" + s + "XA");
      |            ^~~~~