제출 #1335393

#제출 시각아이디문제언어결과실행 시간메모리
1335393vivkostovRobot Contest (IOI23_robot)C++20
16 / 100
35 ms5596 KiB
#include "robot.h"
#include<bits/stdc++.h>
using namespace std;
map<vector<int>,int>m;
void create_instructions()
{
    for(int i=-2;i<=1;i++)
    {
        for(int j=-2;j<=1;j++)
        {
            for(int k=-2;k<=1;k++)
            {
                if(!m[{0,i,j,0,k}])
                {
                    set_instruction({0,i,j,0,k},1,'E');
                    m[{0,i,j,0,k}]++;
                }
            }
            if(!m[{0,i,0,-1,j}])
            {
                set_instruction({0,i,0,-1,j},1,'S');
                m[{0,i,0,-1,j}]++;
            }
            if(!m[{0,i,0,-2,j}])
            {
                set_instruction({0,i,0,-2,j},1,'S');
                m[{0,i,0,-2,j}]++;
            }
        }

        if(!m[{0,i,-2,-1,0}])
        {
            set_instruction({0,i,-2,-1,0},1,'N');
            m[{0,i,-2,-1,0}]++;
        }
    }
}
void create_finish()
{
    for(int i=-2;i<=1;i++)
    {
        for(int j=-2;j<=1;j++)
        {
            if(!m[{0,i,-2,-2,j}])
            {
                set_instruction({0,i,-2,-2,j},1,'T');
                m[{0,i,-2,-2,j}]++;
            }
        }
    }
}
void create_only_path()
{
    vector<int>v;
    for(int i=1;i<=5;i++)v.push_back(0);
    int br=0;
    for(int i=-2;i<=-1;i++)
    {
        for(int j=-2;j<=-1;j++)
        {
            for(int pos1=1;pos1<=4;pos1++)
            {
                for(int pos2=1;pos2<=4;pos2++)
                {
                    if(pos1==pos2)continue;
                    br=0;
                    for(int z=1;z<=4;z++)
                    {
                        if(pos1==z)v[z]=1;
                        else if(pos2==z)v[z]=0;
                        else
                        {
                            if(!br)
                            {
                                v[z]=i;
                                br++;
                            }
                            else
                            {
                                v[z]=j;
                            }
                        }
                    }
                    if(m[v])continue;
                    if(pos2==1)set_instruction(v,1,'W');
                    if(pos2==2)set_instruction(v,1,'S');
                    if(pos2==3)set_instruction(v,1,'E');
                    if(pos2==4)set_instruction(v,1,'N');
                    m[v]++;
                }
            }
        }
    }
}
void program_pulibot()
{
    create_instructions();
    create_finish();
    create_only_path();
}
#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...