제출 #1019445

#제출 시각아이디문제언어결과실행 시간메모리
1019445ZanP콤보 (IOI18_combo)C++14
30 / 100
115 ms25264 KiB
#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(1237); 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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...