Submission #207471

#TimeUsernameProblemLanguageResultExecution timeMemory
207471aloo123Combo (IOI18_combo)C++14
5 / 100
1 ms212 KiB
#include <bits/stdc++.h>
#include <combo.h>
#define ll long long
#define ld long double
#define f first
#define s second
#define mp make_pair
#define pb push_back
#define vll vector<ll>

using namespace std;

// string gg;

// int press(string s){
// 	cout << s << endl;
// 	string pre;
// 	int ans = 0;
// 	for(int i = 0 ;i<gg.size();i++){
// 		pre += gg[i];
// 		bool poss=false;
// 		for(int j = 0;j<s.size();j++){
// 			if(j + pre.size() - 1 >= s.size()) break;
// 			if(s.substr(j,pre.size()) == pre){
// 				poss=true;
// 			}
// 		}
// 		if(poss) {
// 			ans = max(ans,(int)pre.size());
// 		}
// 	}
// 	return ans;
// }

string guess_sequence(int N){

	if(N == 3){
		string s;
		for(int i = 0;i<N;i++){
			for(char lol :{'X','Y','A','B'}){
			string tmp = s;
			tmp += lol;
			if(press(tmp) == (s.size()+1)){
				s = tmp;
				break;
			}
			}
		}
		return s;
	}



	char c;
	for(char lol :{'X','Y','A','B'}){
		string s;
		s+=lol;
		if(press(s) == 1){
			c=lol;
			break;
		}
	}		
	string s;
	s += c;
	for(int i = 1;i<N-1;i++){
		string query = s;

		if(c == 'A'){
			query += "B";
			query+=s;
			query+="XB";
			query+=s;
			query += "XX";
			query += s;
			query += "XY"; 
			int lol = press(query);
			int n = s.size();
			if(lol == n){
				s += "Y";
			}
			if(lol == (n+1)){
				s += "B";
			}
			if(lol == (n+2)){
				s += "X";
			}
		}

		if(c == 'B'){
			query += "A";
			query+=s;
			query+="XA";
			query+=s;
			query += "XX";
			query += s;
			query += "XY"; 
			int lol = press(query);
			int n = s.size();
			if(lol == n){
				s += "Y";
			}
			if(lol == (n+1)){
				s += "A";
			}
			if(lol == (n+2)){
				s += "X";
			}
		}
		if(c == 'X'){
			query += "Y";// B
			query+=s;
			query+="AY";// XB
			query+=s;
			query += "AA";// XX
			query += s;
			query += "AB";// XY 
			int lol = press(query);
			int n = s.size();
			if(lol == n){
				s += "B";
			}
			if(lol == (n+1)){
				s += "Y";
			}
			if(lol == (n+2)){
				s += "A";
			}
		}
		if(c == 'Y'){
			query += "X";
			query+=s;
			query+="AX";
			query+=s;
			query += "AA";
			query += s;
			query += "AB"; 
			int lol = press(query);
			int n = s.size();
			if(lol == n){
				s += "B";
			}
			if(lol == (n+1)){
				s += "X";
			}
			if(lol == (n+2)){
				s += "A";
			}
		}
		
	}
	for(char lol :{'X','Y','A','B'}){
		string ss=s;
		ss+=lol;
		if(press(ss) == N){
			s = ss;
			break;
		}
	}		
	return s;
}

// int main(){
// 	int n;
// 	cin >> n;
// 	cin >> gg;
// 	cout << guess_sequence(n) << endl;
// }

Compilation message (stderr)

combo.cpp: In function 'std::string guess_sequence(int)':
combo.cpp:43:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   43 |    if(press(tmp) == (s.size()+1)){
      |       ~~~~~~~~~~~^~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...