Submission #580284

#TimeUsernameProblemLanguageResultExecution timeMemory
5802848e7Combo (IOI18_combo)C++17
100 / 100
42 ms552 KiB
//Challenge: Accepted
#include <bits/stdc++.h>
#include "combo.h"
#pragma GCC optimize("Ofast")
using namespace std;
#ifdef zisk
void debug(){cout << endl;}
template<class T, class ... U> void debug(T a, U ... b){cout << a << " ", debug(b...);}
template<class T> void pary(T l, T r) {
	while (l != r) cout << *l << " ", l++;
	cout << endl;
}
#else
#define debug(...) 0
#define pary(...) 0
#endif
#define ll long long
#define maxn 605
#define mod 1000000007
#define pii pair<int, int>
#define ff first
#define ss second
#define io ios_base::sync_with_stdio(0);cin.tie(0);
string ch = "ABXY";
string guess_sequence(int N) {
	string p = "", ret;
	char st;
	p = "AB";
	if (press(p) > 0) {
		p = "A";
		if (press(p)) st = 'A';
		else st = 'B';
	} else {
		p = "X";
		if (press(p)) st = 'X';
		else st = 'Y';
	}
	string rem;
	for (int i = 0;i < 4;i++) {
		if (ch[i] != st) rem += ch[i];
	}	

	string cur;
	cur += st;
	if (N == 1) return cur;
	for (int i = 1;i < N - 1;i++) {
		p.clear();
		p += cur;	
		p += rem[0];
		for (int j = 0;j < 3;j++) {
			p += cur;
			p += rem[1];
			p += rem[j];
		}	
		int val = press(p);	
		if (val == i) {
			cur += rem[2];
		} else if (val == i + 1) {
			cur += rem[0];
		} else {
			cur += rem[1];
		}
	}	
	
	int last = 0;	
	for (int i = 1;i < 3;i++) {
		p = cur;
		p += rem[i];
		if (press(p) == N) {
			last = i;
			break;
		}
	}
	cur += rem[last];
	return cur;	
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...