제출 #766872

#제출 시각아이디문제언어결과실행 시간메모리
766872jakobrs콤보 (IOI18_combo)C++17
0 / 100
0 ms208 KiB
#include <iostream>
#include <random>

int press(std::string p);

using i64 = int64_t;

std::string guess_sequence(int n) {
    std::mt19937 rng(102435324);

    char cha = 'A';
    char chb = 'B';
    char chx = 'X';
    char chy = 'Y';
    
    if (press("AB")) {
        if (press("A")) {
            std::swap(cha, cha);
        } else {
            std::swap(cha, chb);
        }
    } else {
        if (press("X")) {
            std::swap(cha, chx);
        } else {
            std::swap(cha, chy);
        }
    }

    std::string guess = { cha };
    std::string seq;

    for (i64 i = 1; i < n; i++) {
        if (i == n - 1) {
            if (press(guess + chb)) {
                guess += chb;
            } else if (press(guess + chx)) {
                guess += chx;
            } else {
                guess += chy;
            }
        } else {
            seq.clear();

            seq.append(guess);
            seq.push_back(chb);
            
            seq.append(guess);
            seq.push_back(chx);
            seq.push_back(chb);
        
            seq.append(guess);
            seq.push_back(chx);
            seq.push_back(chx);
        
            seq.append(guess);
            seq.push_back(chx);
            seq.push_back(chy);

            i64 result = press(seq);

            if (result == guess.size()) {
                guess += chy;
            } else if (result == guess.size() + 1) {
                guess += chb;
            } else {
                guess += chx;
            }
        }
    }

    return guess;
}

컴파일 시 표준 에러 (stderr) 메시지

combo.cpp: In function 'std::string guess_sequence(int)':
combo.cpp:62:24: warning: comparison of integer expressions of different signedness: 'i64' {aka 'long int'} and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   62 |             if (result == guess.size()) {
      |                 ~~~~~~~^~~~~~~~~~~~~~~
combo.cpp:64:31: warning: comparison of integer expressions of different signedness: 'i64' {aka 'long int'} and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   64 |             } else if (result == guess.size() + 1) {
      |                        ~~~~~~~^~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...