Submission #1350610

#TimeUsernameProblemLanguageResultExecution timeMemory
1350610bozho콤보 (IOI18_combo)C++20
30 / 100
6 ms428 KiB
#include <bits/stdc++.h>
#include "combo.h"
using namespace std;

string guess_sequence(int n)
{
    char c[4] = {'Y', 'B', 'A', 'X'};
    int first = -1, last;
    for (int i = 0; i < 3; i++)
    {
        if (press(string{c[i]}))
        {
            first = i;
            break;
        }
    }
    if (first == -1)
        first = 3;
    last = first;
    string s = "", tr = "";
    s += c[first];
    for (int i = 0; i < n; i++)
        tr += 'A';
    tr[0] = c[first];
    int op, j;
    srand(time(nullptr));
    while (s.size() < n)
    {
        vector<int> id;
        for (int i = 0; i < 4; i++)
        {
            if (i != last && i != first)
                id.push_back(i);
        }
        random_shuffle(id.begin(), id.end());

        if (id.size() == 2)
        {
            j = id[0];
            for (int i = 0; i < n; i++)
            {
                if (i < s.size())
                    tr[i] = s[i];
                else
                    tr[i] = c[j];
            }
            op = press(tr);
            if (op == s.size())
            {
                s += c[id[1]];
                last = first;
            }
            else
            {
                for (int i = s.size(); i < op; i++)
                    s += c[j];
                last = j;
            }
        }
        else
        {
            bool done = 0;
            for (int k = 0; k < 2; k++)
            {
                j = id[k];
                for (int i = 0; i < n; i++)
                {
                    if (i < s.size())
                        tr[i] = s[i];
                    else
                        tr[i] = c[j];
                }
                op = press(tr);
                if (op > s.size())
                {
                    done = 1;
                    for (int i = s.size(); i < op; i++)
                        s += c[j];
                    last = j;
                    break;
                }
            }
            if (!done)
            {
                s += c[id[2]];
                last = first;
            }
        }
    }
    return s;
}

Compilation message (stderr)

combo.cpp: In function 'std::string guess_sequence(int)':
combo.cpp:35:23: warning: 'void std::random_shuffle(_RAIter, _RAIter) [with _RAIter = __gnu_cxx::__normal_iterator<int*, vector<int> >]' is deprecated: use 'std::shuffle' instead [-Wdeprecated-declarations]
   35 |         random_shuffle(id.begin(), id.end());
      |         ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/13/algorithm:61,
                 from /usr/include/x86_64-linux-gnu/c++/13/bits/stdc++.h:51,
                 from combo.cpp:1:
/usr/include/c++/13/bits/stl_algo.h:4581:5: note: declared here
 4581 |     random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last)
      |     ^~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...