이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#pragma GCC optimize ("Ofast")
#pragma GCC target ("avx2")
#include "combo.h"
using namespace std;
using ll = long long;
using vi = vector<int>;
#define pb push_back
#define ff first
#define ss second
#define lb lower_bound
#define all(x) (x).begin() , (x).end()
string p = "", lett = "ABXY"; int n;
void solve(int i, int first) {
if(i == n) return;
if(i == n - 1) {
p+="x";
for(int l = 0; l < 2; l++) {
if(l == first) continue;
p[i] = lett[l];
if(press(p) == n) return;
}
if(first == 2) {
p[i] = lett[3];
return;
}
else if(first == 3) {
p[i] = lett[2];
return;
}
else {
p[i] = lett[2];
if(press(p) == n) return;
p[i] = lett[3]; return;
}
return;
}
vector<char>ch;
for(int l = 0; l < 4; l++) {
if(l == first) continue;
ch.pb(lett[l]);
}
string s = "";
for(auto u: ch) s+=p+ch[0]+u;
s += p; s+=ch[1];
p+="x";
int u = press(s);
if(u == i + 1) p[i] = ch[1];
else if(u >= i + 2) p[i] = ch[0];
else p[i] = ch[2];
solve(i+1, first);
}
string guess_sequence(int N) {
int first = -1; n = N;
string s = "AB";
int u = press(s);
if(u >= 1) {
s = "A";
if(press(s)) first = 0;
else first = 1;
}
else {
s = "X";
if(press(s)) first = 2;
else first = 3;
}
p = lett[first];
solve(1, first);
return p;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |