제출 #207459

#제출 시각아이디문제언어결과실행 시간메모리
207459aloo123Combo (IOI18_combo)C++14
5 / 100
1 ms200 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;

const ll N = 3e5+100;
const ll MOD = 1e9+7;

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";
			query+=s;
			query+="AY";
			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 += "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";
			}
		}
		
	}
	char cc;
	for(char lol :{'X','Y','A','B'}){
		string ss;
		ss+=lol;
		if(press(ss) == 1){
			cc=lol;
			break;
		}
	}		
	s += cc;
	return s;
}

컴파일 시 표준 에러 (stderr) 메시지

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