제출 #749968

#제출 시각아이디문제언어결과실행 시간메모리
749968CDuong콤보 (IOI18_combo)C++17
100 / 100
41 ms640 KiB
/* #pragma GCC optimize("Ofast,unroll-loops") #pragma GCC target("avx2,fma,bmi,bmi2,sse4.2,popcnt,lzcnt") */ #include <bits/stdc++.h> #include "combo.h" #define taskname "" #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(), x.rend() #define ll long long #define ld long double #define pb push_back #define ff first #define ss second #define pii pair<int, int> #define vi vector<int> #define vii vector<pii> using namespace std; const int mxN = 2e5 + 5; const int mod = 1e9 + 7; const ll oo = 1e18; char c[] = {'A', 'B', 'X', 'Y'}; string guess_sequence(int N) { int n = N; int cur = press("AB"); string s; if(cur) { cur = press("A"); if(cur) s = "A"; else s = "B"; } else { cur = press("X"); if(cur) s = "X"; else s = "Y"; } if(n == 1) { return s; } vector<char> sadge; for(int i = 0; i < 4; ++i) if(c[i] != s[0]) sadge.emplace_back(c[i]); for(int i = (int)s.size(); i < n - 1; ++i) { string tmp; tmp += s; tmp.pb(sadge[0]); tmp.pb(sadge[0]); tmp += s; tmp.pb(sadge[0]); tmp.pb(sadge[1]); tmp += s; tmp.pb(sadge[0]); tmp.pb(sadge[2]); tmp += s; tmp.pb(sadge[1]); int cur = press(tmp); if(cur == i) s.pb(sadge[2]); else if(cur - 1 == i) s.pb(sadge[1]); else s.pb(sadge[0]); } string tmp = s; tmp.pb(sadge[0]); if(n == press(tmp)) { s.pb(sadge[0]); return s; } tmp.pop_back(); tmp.pb(sadge[1]); if(n == press(tmp)) { s.pb(sadge[1]); return s; } s.pb(sadge[2]); return s; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...