제출 #1191530

#제출 시각아이디문제언어결과실행 시간메모리
1191530viduxCombo (IOI18_combo)C++17
5 / 100
0 ms408 KiB
#include <bits/stdc++.h> using namespace std; // #define LOCAL typedef vector<int> vi; typedef vector<vi> vvi; typedef pair<int, int> pii; #ifdef LOCAL int press(string p) { cout << p << ": "; int x; cin >> x; return x; } #else #include "combo.h" #endif string guess_sequence(int n) { string a; string all = "ABXY"; string cur = "ABXY"; { // Find first int _01 = press("AB"); if (_01) { int _0 = press(string(1, all[0])); if (_0) a.push_back(all[0]), cur.erase(cur.begin()+0); else a.push_back(all[1]), cur.erase(cur.begin()+1); } else { int _2 = press(string(1, all[2])); if (_2) a.push_back(all[2]), cur.erase(cur.begin()+2); else a.push_back(all[3]), cur.erase(cur.begin()+3); } } { // Find middle for (int i = 2; i <= n-1; i++) { string guess = a; guess += cur[0]; for (int j = 0; j < 3; j++) guess += a + cur[1] + cur[j]; int score = press(guess); if (score == i) a += cur[0]; else if (score == i+1) a += cur[1]; else a += cur[2]; } } { // Find last string guess = a + cur[0] + a + cur[1]; int _01 = press(guess); if (_01 == n-1) a += cur[2]; else { guess = a + cur[0]; int _0 = press(guess); if (_0 == n-1) a += cur[1]; else a += cur[0]; } } return a; } #ifdef LOCAL int main() { int n; cin >> n; cout << guess_sequence(n) << endl; return 0; } #endif
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...