제출 #1273229

#제출 시각아이디문제언어결과실행 시간메모리
1273229arkanefury콤보 (IOI18_combo)C++20
5 / 100
8 ms468 KiB
#include "combo.h" #include <bits/stdc++.h> #define pb push_back #define F first #define S second #define sz size() #define FOR(x, n, m, d) for(int x = n; x <= m; x += d) #define nikita ios_base::sync_with_stdio(0), cin.tie(0); using namespace std; string guess_sequence(int N) { string p = "", S = "", str; int cnt; cnt = press("AB"); char st; if(!cnt){ cnt = press("X"); if(cnt)st = 'X'; else st = 'Y'; } else{ cnt = press("A"); if(cnt)st = 'A'; else st = 'B'; } p += st; if(N == 1){ return p; } if(N == 2){ cnt = press(p + 'A' + p + 'B'); if(cnt != 1){ cnt = press(p + 'A'); if(cnt == 2)p += 'A'; else p += 'B'; } else{ cnt = press(p + 'X'); if(cnt == 2)p += 'X'; else p += 'Y'; } return p; } if(p == "Y"){ cnt = press(p + "A" + p + "BA" + p + "BB" + p + "BX"); if(cnt == 2)p += 'A'; if(cnt == 3)p += 'B'; if(cnt == 1)p += 'X'; } else if(p == "X"){ cnt = press(p + "A" + p + "BA" + p + "BB" + p + "BY"); if(cnt == 2)p += 'A'; if(cnt == 3)p += 'B'; if(cnt == 1)p += 'Y'; } else if(p == "A"){ cnt = press(p + "Y" + p + "BY" + p + "BB" + p + "BX"); if(cnt == 2)p += 'Y'; if(cnt == 3)p += 'B'; if(cnt == 1)p += 'X'; } else if(p == "B"){ cnt = press(p + "A" + p + "YA" + p + "YY" + p + "YX"); if(cnt == 2)p += 'A'; if(cnt == 3)p += 'Y'; if(cnt == 1)p += 'X'; } if(N != 3){ FOR(i, 3, N-1, 1){ str = p; char sk = str[str.sz-1]; char sp1, sp2; if(st != 'A' && sk != 'A')sp1 = 'A'; if(st != 'B' && sk != 'B')sp1 = 'B'; if(st != 'X' && sk != 'X')sp1 = 'X'; if(st != 'Y' && sk != 'Y')sp1 = 'Y'; if(st != 'A' && sk != 'A' && sp1 != 'A')sp2 = 'A'; if(st != 'B' && sk != 'B' && sp1 != 'B')sp2 = 'B'; if(st != 'X' && sk != 'X' && sp1 != 'X')sp2 = 'X'; if(st != 'Y' && sk != 'Y' && sp1 != 'Y')sp2 = 'Y'; str += sp1; str += st + p + sp2 + sp2; str += st + p + sp2 + sp1; str += st + p + sp2 + sk; cnt = press(str); if(cnt == p.sz + 2)p += sp2; else if(cnt == p.sz)p += sk; else p += sp1; } } char sk = p[p.sz-1]; char sp1, sp2; if(st != 'A' && sk != 'A')sp1 = 'A'; if(st != 'B' && sk != 'B')sp1 = 'B'; if(st != 'X' && sk != 'X')sp1 = 'X'; if(st != 'Y' && sk != 'Y')sp1 = 'Y'; if(st != 'A' && sk != 'A' && sp1 != 'A')sp2 = 'A'; if(st != 'B' && sk != 'B' && sp1 != 'B')sp2 = 'B'; if(st != 'X' && sk != 'X' && sp1 != 'X')sp2 = 'X'; if(st != 'Y' && sk != 'Y' && sp1 != 'Y')sp2 = 'Y'; cnt = press(p + sp1 + st + p + sp2); if(cnt != p.sz){ cnt = press(p + sp1); if(cnt != p.sz)p += sp1; else p += sp2; } else{ p += sk; } return p; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...