Submission #1187517

#TimeUsernameProblemLanguageResultExecution timeMemory
1187517nouka28콤보 (IOI18_combo)C++20
0 / 100
0 ms420 KiB
#include "combo.h"

#include<bits/stdc++.h>
using namespace std;

// #define int long long

#define rep(i,n) for(int i=0;i<(n);i++)
#define rng(i,l,r) for(int i=(l);i<(r);i++)
#define rrep(i,n) for(int i=(n)-1;i>=0;i--)
#define rrng(i,l,r) for(int i=(r)-1;i>=(l);i--)

#define fi first
#define se second
#define all(x) (x).begin(),(x).end()

random_device rd;
mt19937 mt(rd());
uniform_int_distribution<int> rnd(0,1000000000);

int randint(int a,int b){
	return a+rnd(mt)%(b-a+1);
}

std::string guess_sequence(int N) {
	string t="ABXY";
	vector<vector<char>> st(N,{'A','B','X','Y'});
	int idx=0;
	string ans="";
	while(idx<N){
		string s=ans;
		while(s.size()<N){
			vector<int> vs;
			rep(i,4){
				if(find(all(st[s.size()]),t[i])!=st[s.size()].end()){
					vs.push_back(i);
				}
			}
			s+=t[vs[randint(0,vs.size()-1)]];
		}
		// cout<<"s : "<<s<<endl;
		int ret=press(s);
		// cout<<"ret : "<<ret<<endl;
		rng(i,idx,ret){
			ans+=s[i];
			if(i==0){
				rng(j,1,N){
					st[j].erase(find(all(st[j]),s[0]));
				}
			}
			st[i]={s[i]};
		}
		if(ret!=N){
			st[ret].erase(find(all(st[ret]),s[ret]));
		}
		idx=ret;
	}
	return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...