Submission #96323

#TimeUsernameProblemLanguageResultExecution timeMemory
96323ShaneOngCombo (IOI18_combo)C++14
100 / 100
54 ms580 KiB
#include <bits/stdc++.h>
#include "combo.h"
using namespace std;
 
string guess_sequence(int N) {
    string ans = "";
    int a=press("AB"),b;
	
    unordered_set<char> poss {'A','B','X','Y'};
    if(a){
		int b=press("B");
		if(b){
			ans+="B";
			poss.erase('B');
		}else{
			ans+="A";
			poss.erase('A');
		}
    }else{
		int y=press("Y");
		if(y){
			ans+="Y";
			poss.erase('Y');
		}else{
			ans+="X";
			poss.erase('X');
		}
	}
   // printf("%d\n",poss.size());
    for(int x=1;x<N-1;x++){
        int temp=0;
        string qu = "";
        auto it = poss.begin();
        qu+=ans + *it;
 
        for(char c:poss){
            qu+=ans+*next(it)+c;
        }
        //printf("%c %c %c\n",*next(it),*it,*next(next(it)));
        //printf("%s\n",qu.c_str());
        int coins=press(qu);
 
        //printf("%s %d %d\n",qu.c_str(),coins,(int)ans.size());
       // if(x==2)
          //  return 0;
        if(coins==(int)ans.size())
            ans+=*next(next(it));
        else if(coins==2+(int)ans.size()){
            ans+=*next(it);
        }else
            ans+=*it;
 
    }

    if(N>=2){
        a=press(ans+*poss.begin()),b=press(ans+*next(poss.begin()));
        if(a==N)
            ans+=*poss.begin();
        else if(b==N)
            ans+=*next(poss.begin());
        else
            ans+=*next(next(poss.begin()));
        //cout<<ans;
    }
    return ans;
}

Compilation message (stderr)

combo.cpp: In function 'std::string guess_sequence(int)':
combo.cpp:31:13: warning: unused variable 'temp' [-Wunused-variable]
   31 |         int temp=0;
      |             ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...