제출 #207501

#제출 시각아이디문제언어결과실행 시간메모리
207501aloo123콤보 (IOI18_combo)C++14
100 / 100
42 ms664 KiB
#include <bits/stdc++.h> #include <combo.h> using namespace std; /* string gg; int co = 0; int press(string s){ co++; string pre; int ans = 0; for(int i = 0 ;i<gg.size();i++){ pre += gg[i]; bool poss=false; for(int j = 0;j<s.size();j++){ if(j + pre.size() - 1 >= s.size()) break; if(s.substr(j,pre.size()) == pre){ poss=true; } } if(poss) { ans = max(ans,(int)pre.size()); } } return ans; }*/ string guess_sequence(int N){ if(N == 3){ string s; for(int i = 0;i<N;i++){ for(char lol :{'X','Y','A','B'}){ string tmp = s; tmp += lol; if(press(tmp) == (s.size()+1)){ s = tmp; break; } } } return s; } if(N == 1){ char c='@'; for(char lol :{'X','Y','A'}){ string s; s+=lol; if(press(s) == 1){ c=lol; break; } } if(c == '@'){ c= 'B'; } string s; s += c; return s; } char c; string gg="AB"; if(press(gg) == 0){ string tmp; tmp += "X"; if(press(tmp)){ c = 'X'; } else c ='Y'; } else{ string tmp; tmp += "A"; if(press(tmp)){ c = 'A'; } else c ='B'; } string s; s += c; for(int i = 1;i<N-1;i++){ string query = s; if(c == 'A'){ query += "B"; query+=s; query+="XB"; query+=s; query += "XX"; query += s; query += "XY"; int lol = press(query); int n = s.size(); if(lol == n){ s += "Y"; } if(lol == (n+1)){ s += "B"; } if(lol == (n+2)){ s += "X"; } } if(c == 'B'){ query += "A"; query+=s; query+="XA"; query+=s; query += "XX"; query += s; query += "XY"; int lol = press(query); int n = s.size(); if(lol == n){ s += "Y"; } if(lol == (n+1)){ s += "A"; } if(lol == (n+2)){ s += "X"; } } if(c == 'X'){ query += "Y";// B query+=s; query+="AY";// XB query+=s; query += "AA";// XX query += s; query += "AB";// XY int lol = press(query); int n = s.size(); if(lol == n){ s += "B"; } if(lol == (n+1)){ s += "Y"; } if(lol == (n+2)){ s += "A"; } } if(c == 'Y'){ query += "X"; query+=s; query+="AX"; query+=s; query += "AA"; query += s; query += "AB"; int lol = press(query); int n = s.size(); if(lol == n){ s += "B"; } if(lol == (n+1)){ s += "X"; } if(lol == (n+2)){ s += "A"; } } } string se; for(char lol : {'X','Y','A','B'}){ if(lol == c) continue; se+=lol; } for(int i =0;i<se.size()-1;i++){ char lol = se[i]; string ss=s; ss+=lol; if(press(ss) == N){ s = ss; return s; } } s += se.back(); return s; } /* int main(){ int n; cin >> n; cin >> gg; cout << guess_sequence(n) << endl; cout << co << endl; }*/

컴파일 시 표준 에러 (stderr) 메시지

combo.cpp: In function 'std::string guess_sequence(int)':
combo.cpp:35:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   35 |    if(press(tmp) == (s.size()+1)){
      |       ~~~~~~~~~~~^~~~~~~~~~~~~~~
combo.cpp:175:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  175 |  for(int i =0;i<se.size()-1;i++){
      |               ~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...