Submission #1298265

#TimeUsernameProblemLanguageResultExecution timeMemory
1298265tit_manhCombo (IOI18_combo)C++20
100 / 100
10 ms480 KiB
/*
    author : TIT_manh
*/
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <cmath>
#include <iomanip>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <map>
#include <unordered_map>
#include <set>
#include <unordered_set>
#include <queue>
#include <stack>
#include <deque>
#include <bitset>
#include <numeric> 
#include <functional>
#include <cassert>
#include <sstream>
#include <climits> 
#define ll long long
#define FOR(i,l,r) for (int i = l; i <= r; i++)
#define FOD(i,r,l) for (int i = r; i >= l; i--)
#define fi first
#define se second
#define pb push_back
#define endl "\n"
using namespace std;
int n;
int press(string p);
string guess_sequence(int N) {
    char d[3];
    string res;
    if (press("AB")) {
        if (press("A")) {
            res += 'A';
            d[0] = 'B'; d[1] = 'X'; d[2] = 'Y';
        }
        else {
            res += 'B';
            d[0] = 'A'; d[1] = 'X'; d[2] = 'Y';
        }
    }
    else {
        if (press("X")) {
            res += 'X';
            d[0] = 'B'; d[1] = 'A'; d[2] = 'Y';
        }
        else {
            res += 'Y';
            d[0] = 'B'; d[1] = 'X'; d[2] = 'A';
        }
    }
    if (N == 1) return res;
    FOR(i,2,N) {
        if (i == N) {
            if (press(res + d[0]) == N) res += d[0];
            else if (press(res + d[1]) == N) res += d[1];
            else res += d[2];
            break;
        }
        string tmp = res + d[0]+d[0] + res + d[0]+d[1] + res + d[0]+d[2] + res + d[1];
        int ans = press(tmp);
        if (ans == i + 1) res += d[0];
        else if (ans == i) res += d[1];
        else res += d[2];
    }
    return res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...