이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
int press(string p);
// {
// cout << p << '\n';
// int a; cin >> a;
// return a;
// }
int n;
string z;
string p,s,t;
void make_bases()
{
p.resize(n);
s.resize(n);
t.resize(n);
vector<char> c(3);
if(z[0] == 'A'){
c[0] = 'X';
c[1] = 'Y';
c[2] = 'B';
} else if(z[0] == 'B') {
c[0] = 'A';
c[1] = 'X';
c[2] = 'Y';
} else if(z[0] == 'X'){
c[0] = 'A';
c[1] = 'B';
c[2] = 'Y';
} else if(z[0] == 'Y'){
c[0] = 'A';
c[1] = 'B';
c[2] = 'X';
}
vector<int> rper = {0,1,2};
p[0] = c[0];
s[0] = c[1];
t[0] = c[2];
for(int i= 1;i<n;i++)
{
for(int j = 3;j>=1;j--){
int a = rand()%j;
int b = rper[a];
rper[a] = rper[j-1];
rper[j-1] = b;
}
p[i] = c[rper[0]];
s[i] = c[rper[1]];
t[i] = c[rper[2]];
}
//cout << p << '\n' << s << '\n' << t << '\n';
}
void f(int m, string & ps, string & ss, string & ts);
void g(string & ps, string & ss, string & ts)
{
if(z.size() == n){return;}
string ask = z;
for(int i = 0;i<n-z.size();i++){ask.push_back(ps[i]);}
for(int i = 0;i<z.size();i++){ask.push_back(z[i]);}
for(int i = 0;i<n-z.size();i++){ask.push_back(ss[i]);}
int a = press(ask);
if(a == z.size()){
z.push_back(ts[0]);
g(ps,ss,ts);
}else{
f(a-z.size(),ps,ss,ts);
}
}
void f(int m, string & ps, string & ss, string & ts)
{
if(z.size() == n){return;}
string ask = z;
for(int i = 0;i<m;i++){ask.push_back(ps[i]);}
for(int i = 0;i<n-m-z.size();i++){ask.push_back(ss[i]);}
for(int i= 0;i<z.size();i++){ask.push_back(z[i]);}
for(int i = 0;i<m;i++){ask.push_back(ps[i]);}
for(int i = 0;i<n-m-z.size();i++){ask.push_back(ts[i]);}
int a = press(ask);
if(a == z.size()){
for(int i = 0;i<m;i++){z.push_back(ss[i]);}
if(ss[m] == ps[0]){g(ss,ts,ps);}
else if(ss[m] == ss[0]){g(ps,ts,ss);}
else {g(ps,ss,ts);}
} else {
for(int i = 0;i<m;i++){z.push_back(ps[i]);}
f(a-z.size(), ss, ts, ps);
}
}
string guess_sequence(int N)
{
n = N;
srand(6);
z.reserve(n);
int a = press("AB");
if(a == 2){z = "AB";}
else if(a == 1){
if(press("A")){
z = "A";
}else{
z = "B";
}
}else{
if(press("X")){
z = "X";
}else{
z = "Y";
}
}
make_bases();
g(p,s,t);
return z;
}
// int main()
// {
// int x; cin >> x; cout << guess_sequence(x) << '\n';
// return 0;
// }
컴파일 시 표준 에러 (stderr) 메시지
combo.cpp: In function 'void g(std::string&, std::string&, std::string&)':
combo.cpp:60:17: warning: comparison of integer expressions of different signedness: 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
60 | if(z.size() == n){return;}
| ~~~~~~~~~^~~~
combo.cpp:62:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
62 | for(int i = 0;i<n-z.size();i++){ask.push_back(ps[i]);}
| ~^~~~~~~~~~~
combo.cpp:63:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
63 | for(int i = 0;i<z.size();i++){ask.push_back(z[i]);}
| ~^~~~~~~~~
combo.cpp:64:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
64 | for(int i = 0;i<n-z.size();i++){ask.push_back(ss[i]);}
| ~^~~~~~~~~~~
combo.cpp:66:10: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
66 | if(a == z.size()){
| ~~^~~~~~~~~~~
combo.cpp: In function 'void f(int, std::string&, std::string&, std::string&)':
combo.cpp:76:17: warning: comparison of integer expressions of different signedness: 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
76 | if(z.size() == n){return;}
| ~~~~~~~~~^~~~
combo.cpp:79:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
79 | for(int i = 0;i<n-m-z.size();i++){ask.push_back(ss[i]);}
| ~^~~~~~~~~~~~~
combo.cpp:80:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
80 | for(int i= 0;i<z.size();i++){ask.push_back(z[i]);}
| ~^~~~~~~~~
combo.cpp:82:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
82 | for(int i = 0;i<n-m-z.size();i++){ask.push_back(ts[i]);}
| ~^~~~~~~~~~~~~
combo.cpp:86:10: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
86 | if(a == z.size()){
| ~~^~~~~~~~~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |