Submission #1144431

#TimeUsernameProblemLanguageResultExecution timeMemory
1144431crispxxCombo (IOI18_combo)C++20
30 / 100
7 ms412 KiB
#include <bits/stdc++.h>
#include "combo.h"

// #include "grader.cpp"

using namespace std;

#define all(x) x.begin(), x.end()
#define nl '\n'

mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
#define rnd(l, r) uniform_int_distribution<int>(l, r)(rng)

string guess_sequence(int n) {
	vector<char> F {'B', 'X', 'Y'};
	
	string p(n, 'A');
	
	int pf = 0;
	
	if(press(p)) {
		p = string(n, 'B');
		p[0] = 'A';
		pf = 1;
		F.erase(find(all(F), 'B'));
	}
	
	if(!pf) {
		for(int i = 0; i < 2; i++) {
			p[0] = F[i];
			int u = press(p);
			if(u) {
				p[0] = F[i];
				pf = u;
				F.erase(find(all(F), F[i]));
				break;
			}
		}
	}
	
	if(!pf) {
		p[0] = F[2];
		pf = 1;
		F.erase(find(all(F), F[2]));
	}
	
	pf = press(p);
		
	for(int i = 0; i < n; i++) {
		if(i < pf) continue;
		
		int idx1 = rnd(0, 1);
		
		int idx2 = idx1;
		
		while(idx2 == idx1) idx2 = rnd(0, 1);
		
		for(auto j : { idx1, idx2 }) {
			p[i] = F[j];
			int u = press(p);
			if(u - pf > 0) {
				pf = u;
				break;
			}
		}
		
	}
	
	
	return p;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...