Submission #442665

#TimeUsernameProblemLanguageResultExecution timeMemory
442665Theo830Combo (IOI18_combo)C++17
100 / 100
52 ms572 KiB
    #include <bits/stdc++.h>
    #include "combo.h"
    using namespace std;
    typedef long long ll;
    ll INF = 1e18+7;
    long long MOD = 998244353;
    typedef pair<ll,ll> ii;
    #define iii pair<ii,ll>
    #define f(i,a,b) for(long long i = a;i < b;i++)
    #define rf(i,a,b) for(long long i=a;i>=b;i--)
    #define fastio ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    #define w(t) while(t--)
    #define c(n); cin>>n;
    #define p(n) cout<<n;
    #define pl(n) cout<<n<<endl;
    #define ps(n); cout<<n<<" ";
    #define F first
    #define S second
    #define pb(a) push_back(a)
    #define all(x) (x).begin(), (x).end()
    #define ull unsigned long long
    #define vll vector<ll>
    #define vii vector<ii>
    #define mkp make_pair
    #define ld long double
    #define arrin(a,n) f(i,0,n){cin>>a[i];}
    #define arrout(a,n) f(i,0,n){cout<<a[i]<<" ";}
    #define printclock cerr<<"Time : "<<1000*(ld)clock()/(ld)CLOCKS_PER_SEC<<"ms\n";
    #define PI (2*acos(0))
    const long long N = 1e6+5;
    void YESNO(ll a){if(!!a){pl("Yes");}else{pl("No");}}
    void filesin(void){freopen("tracing.in","r",stdin);}
    void filesout(void){freopen("tracing.out","w",stdout);}
    ///I hope I will get uprating and don't make mistakes
    ///I will never stop programming
    ///sqrt(-1) Love C++
    ///Please don't hack me
    ///@TheofanisOrfanou Theo830
    ///Training
    string guess_sequence(int N){
        int n = N;
        string ans = "";
        string other = "";
        string all = "ABXY";
        if(press("AB")){
            if(press("A")){
                ans += "A";
            }
            else{
                ans += "B";
            }
        }
        else{
            if(press("X")){
                ans += "X";
            }
            else{
                ans += "Y";
            }
        }
        if(n == 1){
            return ans;
        }
        for(auto x:all){
            if(ans[0] != x){
                other += x;
            }
        }
        while(ans.size() < n-1){
            int val = press(ans+other[0]+ans+other[1]+other[0]+ans+other[1]+other[1]+ans+other[1]+other[2]);
            if(val == ans.size()+2){
                ans += other[1];
            }
            else if(val == ans.size()+1){
                ans += other[0];
            }
            else{
                ans += other[2];
            }
        }
        if(press(ans+other[0]) == n){
                ans += other[0];
        }
        else if(press(ans + other[1]) == n){
            ans += other[1];
        }
        else{
            ans += other[2];
        }
        return ans;
    }

Compilation message (stderr)

combo.cpp: In function 'std::string guess_sequence(int)':
combo.cpp:69:26: warning: comparison of integer expressions of different signedness: 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   69 |         while(ans.size() < n-1){
      |               ~~~~~~~~~~~^~~~~
combo.cpp:71:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   71 |             if(val == ans.size()+2){
      |                ~~~~^~~~~~~~~~~~~~~
combo.cpp:74:25: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   74 |             else if(val == ans.size()+1){
      |                     ~~~~^~~~~~~~~~~~~~~
combo.cpp: In function 'void filesin()':
combo.cpp:32:31: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   32 |     void filesin(void){freopen("tracing.in","r",stdin);}
      |                        ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
combo.cpp: In function 'void filesout()':
combo.cpp:33:32: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   33 |     void filesout(void){freopen("tracing.out","w",stdout);}
      |                         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...