제출 #1230756

#제출 시각아이디문제언어결과실행 시간메모리
1230756riddlesCombo (IOI18_combo)C++20
0 / 100
0 ms408 KiB
#include <bits/stdc++.h> #include "combo.h" using namespace std; typedef long long ll; typedef map<ll, ll> mp; typedef pair<ll, ll> pll; typedef queue<ll> qi; typedef vector<ll> vi; typedef vector<bool> vb; typedef vector <vi> vvi; typedef vector <pll> vpl; typedef vector <string> vs; #define YES cout<<"YES\n" #define Yes cout<<"Yes\n" #define NO cout<<"NO\n" #define No cout<<"No\n" #define F first #define S second #define pb push_back #define all(x) begin(x), end(x) ll go() { ll q = press("AB"); if(q >= 1) { q = press("A"); if(q == 1) return 0; else return 1; } else { q = press("X"); if(q == 1) return 2; else return 3; } } string guess_sequence(int N) { string ans = ""; vector<char> idx = {'A', 'B', 'X', 'Y'}; ll a = go(); ans += idx[a]; for(ll i = 1; i < N; i++) { string test; if(idx[a] == 'A') { test = ans + "B" + ans + "X" + ans + "Y"; } else if(idx[a] == 'B') { test = ans + "A" + ans + "X" + ans + "Y"; } else if(idx[a] == 'X') { test = ans + "A" + ans + "B" + ans + "Y"; } else { test = ans + "A" + ans + "B" + ans + "X"; } ll k = press(test); if(k == i+1) { if(idx[a] == 'A') ans += 'B'; else if(idx[a] == 'B') ans += 'A'; else if(idx[a] == 'X') ans += 'A'; else ans += 'A'; } else if(k == i+2) { if(idx[a] == 'A') ans += 'X'; else if(idx[a] == 'B') ans += 'X'; else if(idx[a] == 'X') ans += 'B'; else ans += 'B'; } else { if(idx[a] == 'A') ans += 'Y'; else if(idx[a] == 'B') ans += 'Y'; else if(idx[a] == 'X') ans += 'Y'; else ans += 'X'; } if(i == N-1) { if(press(ans) != N) { ans.pop_back(); if(idx[a] == 'A') ans += (ans.back() == 'B' ? 'X' : 'Y'); else if(idx[a] == 'B') ans += (ans.back() == 'A' ? 'X' : 'Y'); else if(idx[a] == 'X') ans += (ans.back() == 'A' ? 'B' : 'Y'); else ans += (ans.back() == 'A' ? 'B' : 'X'); } } } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...