제출 #805746

#제출 시각아이디문제언어결과실행 시간메모리
805746AlphaMale06콤보 (IOI18_combo)C++14
0 / 100
22 ms696 KiB
#include <bits/stdc++.h>
#include <combo.h>
using namespace std;
#define pb push_back


char guess_first(){
	int ans = press("AB");
	if(ans==0){
		ans=press("X");
		if(ans==1){
			return 'X';
		}
		return 'Y';
	}	
	else{
		ans=press("A");
		if(ans==1){
			return 'A';
		}
		return 'B';
	}
}


string guess_sequence(int n){
	char f = guess_first();
	vector<char> nf;
	if('A'!=f)nf.pb('A');
	if('B'!=f)nf.pb('B');
	if('X'!=f)nf.pb('X');
	if('Y'!=f)nf.pb('Y');
	int gsd=1;
	string ans= "";
	ans+=f;
	if(n==1){
		return ans;
	}
	while(gsd<n-1){
		string gs=ans+nf[0]+nf[0]+ans+nf[0]+nf[1]+ans+nf[0]+nf[2]+ans+nf[1]+nf[0];
		int kita=press(gs);
		if(kita==gsd-1){
			ans.pop_back();
			ans+=nf[1];
			ans+=nf[0];
			gsd++;
		}
		else if(kita==gsd){
			gsd++;
			ans+=nf[2];
		}
		else if(kita==gsd+1){
			gsd++;
			ans+=nf[1];
		}
		else{
			gsd++;
			ans+=nf[0];
			if(gsd==n-1){
				kita=press(ans+nf[0]);
				if(kita==gsd){
					ans.pop_back();
					ans+=nf[1];
					kita=press(ans);
					if(kita==n){
						return ans;
					}
					else{
						ans.pop_back();
						return ans+nf[2];
					}
				}
				else if(kita==gsd-1){
					ans.pop_back();
					return ans+nf[1]+nf[0];
				}
				else if(kita==gsd+1){
					return ans;
				}
			}
		}
	}
	string gs=ans+nf[0];
	if(press(gs)==n){
		return gs;
	}
	else{
		gs.pop_back();
		gs+=nf[1];
		if(press(gs)==n){
			return gs;
		}
		else{
			gs.pop_back();
			return gs+nf[2];
		}
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...