Submission #1151919

#TimeUsernameProblemLanguageResultExecution timeMemory
1151919at128Combo (IOI18_combo)C++20
100 / 100
8 ms524 KiB
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>     
#include <ext/pb_ds/tree_policy.hpp>  

using namespace std;
using namespace __gnu_pbds;
 
void __print(int x) {cerr << x;}
void __print(long x) {cerr << x;}
void __print(long long x) {cerr << x;}
void __print(unsigned x) {cerr << x;}
void __print(unsigned long x) {cerr << x;}
void __print(unsigned long long x) {cerr << x;}
void __print(float x) {cerr << x;}
void __print(double x) {cerr << x;}
void __print(long double x) {cerr << x;}
void __print(char x) {cerr << '\'' << x << '\'';}
void __print(const char *x) {cerr << '\"' << x << '\"';}
void __print(const string &x) {cerr << '\"' << x << '\"';}
void __print(bool x) {cerr << (x ? "true" : "false");}
 
template<typename T, typename V>
void __print(const pair<T, V> &x) {cerr << '{'; __print(x.first); cerr << ','; __print(x.second); cerr << '}';}
template<typename T>
void __print(const T &x) {int f = 0; cerr << '{'; for (auto &i: x) cerr << (f++ ? "," : ""), __print(i); cerr << "}";}
void _print() {cerr << "]\n";}
template <typename T, typename... V>
void _print(T t, V... v) {__print(t); if (sizeof...(v)) cerr << ", "; _print(v...);}
#ifndef ONLINE_JUDGE
#define debug(x...) cerr << "[" << #x << "] = ["; _print(x)
#else
#define debug(x...)
#endif

typedef tree<
    int,
    null_type,
    less_equal<int>,
    rb_tree_tag,
    tree_order_statistics_node_update> ordered_set;
typedef tree<
    int,
    null_type,
    less<int>,
    rb_tree_tag,
    tree_order_statistics_node_update> ordered_multiset;    
 
#define all(v)              ((v).begin()), ((v).end())
#define sz(v)               ((int)((v).size()))
#define pb                  push_back
 
typedef long long         ll;

#include"combo.h"
string guess_sequence(int n){
    string res;
    if(press("AB")>0){
        if(press("A")>0){
            res="A";
        }else{
            res="B";
        }
    }else{
        if(press("X")>0){
            res="X";
        }else{
            res="Y";
        }
    }
    if(n==1){
        return res;
    }
    string a="ABXY",ne;
    for(int i=0;i<4;i++){
        if(a[i]!=res[0]){
            ne.pb(a[i]);
        }
    }
    while(res.size()<n-1){
        string q,t;
        t=res;
        t.pb(ne[0]);
        q+=t;
        t=res;
        t.pb(ne[1]);
        for(int j=0;j<3;j++){
            t.pb(ne[j]);
            q+=t;
            t.pop_back();
        }
        int p=press(q);
        if(p==res.size()+1){
            res.pb(ne[0]);
        }else
        if(p==res.size()+2){
            res.pb(ne[1]);
        }else{
            res.pb(ne[2]);
        }
    }
    string t1=res;
    t1.pb(ne[0]);
    t1+=res;
    t1.pb(ne[1]);
    if(press(t1)==n){
        res+=ne[0];
        if(press(res)==n){
            return res;
        }else{
            res.pop_back();
            res+=ne[1];
            return res;
        }
    }else{
        res+=ne[2];
        return res;
    }
    return res;
}
 
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...