제출 #311746

#제출 시각아이디문제언어결과실행 시간메모리
311746zakaF콤보 (IOI18_combo)C++14
0 / 100
1 ms200 KiB
#include <iostream> #include <cstdlib> #include <algorithm> #include <cmath> #include <vector> #include <set> #include <map> #include <unordered_set> #include <unordered_map> #include <cstring> #include "combo.h" using namespace std; using ll = long long; using ld = long double; using uint = unsigned int; using ull = unsigned long long; #define pb push_back #define mp make_pair #define sz(x) (ll)x.size() #define all(x) (x).begin(),(x).end() #define rall(x) (x).rbegin(),(x).rend() #define fi first #define se second string guess_sequence(int N) { string ans; vector<string> a[N+1]; if(N == 1) { if(press("A") == 1) ans = "A"; else if(press("B")==1) ans = "B"; else if(press("X") == 1) ans = "X"; else ans = "Y"; return ans; } a[0] = a[1] = {"A","B","X","Y"}; int start = 1; bool ok = 0; string first = "Y"; for(int i = 0;i<sz(a[0])-1&&!ok;i++) { for(int j = 0;j<sz(a[1])&&!ok;j++) { if(a[0][i] == a[1][j])continue; int x= press(a[0][i] + a[1][j]); if(x == 2) { start+=2; ans+=a[0][i]+a[1][j]; first = a[0][i]; ok = 1; } else if(x == 1) { start++; first = a[0][i]; a[1].erase(a[1].begin()+j); ans+=a[0][i]; ok = 1; } else break; } } if(ans.empty()) ans+=first; for(int j = 0;j<4;j++) if(a[1][j] == first) { a[1].erase(a[1].begin()+j); break; } for(int i = 2;i<N;i++) { for(string x:a[0]) if(x!=first) a[i].pb(x); } for(int i = start;i<N-1;i++) { if(sz(a[i]) == 1) { ans+=a[i][0]; continue; } bool did = 0; for(int j = 0;j<sz(a[i])&&!did;j++) for(int k = 0;k<sz(a[i+1])&&!did;k++) { int x = press(ans+a[i][j]+a[i+1][k]); if(x == i+1) { ans+=a[i][j]; a[i+1].erase(a[i+1].begin()+k); did = 1; } else if(x == i+2) { ans+=a[i][j]+a[i+1][k]; did = 1; i++; } else break; } } if(sz(a[N-1]) == 1) ans+=a[N-1][0]; else { for(int i = 0;i<sz(a[N-1])-1;i++) if(press(ans+a[N-1][i])==N) { ans+=a[N-1][i]; break; } if(sz(ans)<N) ans+=a[N-1].back(); } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...