Submission #1241533

#TimeUsernameProblemLanguageResultExecution timeMemory
1241533BoasRobot Contest (IOI23_robot)C++20
24 / 100
68 ms5704 KiB
#include "robot.h"

#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define loop(n, i) for (int i = 0; i < n; i++)
#define ALL(x) begin(x), end(x)
#define sz(x) (int)x.size()
typedef set<int> si;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef pair<int, int> ii;
typedef vector<ii> vii;
typedef set<ii> sii;
typedef vector<ii> vii;

int max_col = 4;

void program_pulibot()
{
    for (int c = 0; c <= max_col; c++)
    {
        for (int w = -2; w <= max_col; w++)
        {
            for (int s = -2; s <= max_col; s++)
            {
                for (int e = -2; e <= max_col; e++)
                {
                    for (int n = -2; n <= max_col; n++)
                    {
                        auto goTo = [&](int i, int leave)
                        {
                            if (s == i)
                                set_instruction({c, w, s, e, n}, leave, 'S');
                            else if (e == i)
                                set_instruction({c, w, s, e, n}, leave, 'E');
                            else if (n == i)
                                set_instruction({c, w, s, e, n}, leave, 'N');
                            else if (w == i)
                                set_instruction({c, w, s, e, n}, leave, 'W');
                        };
                        si buren = {w, s, e, n};
                        if (c == 0)
                        {
                            if (s == -2 && e == -2)
                                goTo(3, 1);
                            else if (buren.count(0))
                                goTo(0, 3);
                            else
                                goTo(3, 2);
                        }
                        else if (c == 3)
                        {
                            if (buren.count(1))
                            {
                                if (buren.count(2))
                                    goTo(2, 1);
                                else if (buren.count(3))
                                    goTo(3, 1);
                                else
                                    set_instruction({c, w, s, e, n}, 1, 'T');
                            }
                            else if (buren.count(0))
                                goTo(0, 3);
                            else if (buren.count(2))
                                goTo(3, 2);
                        }
                        else if (c == 2)
                        {
                            if (buren.count(1) || buren.count(4))
                            {
                                if (buren.count(2))
                                    goTo(2, 4);
                                else if (buren.count(4))
                                    goTo(4, 0);
                                else
                                    goTo(1, 0);
                            }
                        }
                        else if (c == 1)
                        {
                            if (buren.count(2))
                                goTo(2, 1);
                            else if (buren.count(3))
                                goTo(3, 1);
                            else
                                set_instruction({c, w, s, e, n}, 1, 'T');
                        }
                        else if (c == 4)
                        {
                            if (buren.count(2))
                                goTo(2, 4);
                            else if (buren.count(1) || buren.count(4))
                            {
                                if (buren.count(4))
                                    goTo(4, 0);
                                else
                                    goTo(1, 0);
                            }
                        }
                    }
                }
            }
        }
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...