Submission #545838

#TimeUsernameProblemLanguageResultExecution timeMemory
545838Sergio_2357Combo (IOI18_combo)C++17
100 / 100
39 ms660 KiB
#include "combo.h" #include <bits/stdc++.h> using namespace std; char get_f_l() { char a, b, c, d; a = 'A'; b = 'B'; c = 'X'; d = 'Y'; if (press({ a, b })) { if (press({ a })) return a; else return b; } else { if (press({ c })) return c; else return d; } } void assign_chars(char f, char& a, char& b, char& c) { string s = "ABXY"; int d = 0; while (f != s[d]) d++; string r = ""; for (int i = 0; i < 4; i++) { if (i == d) continue; r.push_back(s[i]); } a = r[0]; b = r[1]; c = r[2]; } void swap_c(char& a, char& b, char& c) { string s = { a, b, c }; random_shuffle(s.begin(), s.end()); a = s[0]; b = s[1]; c = s[2]; } string gen_q(string s, char a, char b, char c, int n) { vector<string> qs = { { a }, { b, a }, { b, b }, { b, c } }; string res = ""; for (int i = 0; i < qs.size(); i++) res += s + qs[i]; return res; } string guess_sequence(int N) { srand(chrono::duration_cast<chrono::milliseconds>(chrono::system_clock::now().time_since_epoch()).count()); //Pseudocode: char f_l = get_f_l(); string s = ""; s.push_back(f_l); if (N == 1) return s; char a, b, c; assign_chars(f_l, a, b, c); while (s.size() < N - 1) { // ask for a, ba, bb, bc //swap_c(a, b, c); string q = gen_q(s, a, b, c, N); int r = press(q) - s.size(); if (r == 0) s.push_back(c); if (r == 1) s.push_back(a); if (r == 2) s.push_back(b); } if (press(s + a) - s.size()) s.push_back(a); else if (press(s + b) - s.size()) s.push_back(b); else s.push_back(c); s.resize(N); return s; }

Compilation message (stderr)

combo.cpp: In function 'std::string gen_q(std::string, char, char, char, int)':
combo.cpp:58:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::__cxx11::basic_string<char> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   58 |     for (int i = 0; i < qs.size(); i++)
      |                     ~~^~~~~~~~~~~
combo.cpp: In function 'std::string guess_sequence(int)':
combo.cpp:74:21: warning: comparison of integer expressions of different signedness: 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   74 |     while (s.size() < N - 1) {
      |            ~~~~~~~~~^~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...