제출 #842230

#제출 시각아이디문제언어결과실행 시간메모리
842230gs18115로봇 대회 (IOI23_robot)C++17
100 / 100
125 ms6532 KiB
#include"robot.h"
#include<iostream>
#include<vector>
#include<algorithm>
#define ep emplace
#define eb emplace_back
#define fi first
#define se second
#define all(x) (x).begin(),(x).end()
using namespace std;
typedef long long ll;
typedef pair<int,int>pi;
typedef pair<ll,ll>pl;
const int inf=1e9+7;
const ll INF=1e18;
#define SI set_instruction
#define forn(i) for(int i=-2;i<=6;i++)
const char H='H',W='W',S='S',E='E',N='N',T='T';
const int cw=3,cs=4,ce=5,cn=6;
char findarrow(int a,int b,int c,int d,int e)
{
    if(b==ce)
        return W;
    if(c==cn)
        return S;
    if(d==cw)
        return E;
    if(e==cs)
        return N;
    return H;
}
char findnum(int a,int b,int c,int d,int e,int num)
{
    if(b==num)
        return W;
    if(c==num)
        return S;
    if(d==num)
        return E;
    if(e==num)
        return N;
    return H;
}
bool isstart(int a,int b,int c,int d,int e)
{
    return b==-2&&e==-2;
}
bool isend(int a,int b,int c,int d,int e)
{
    return c==-2&&d==-2;
}
int col(char c)
{
    if(c==W)
        return cw;
    if(c==S)
        return cs;
    if(c==E)
        return ce;
    if(c==N)
        return cn;
    return -1;
}
char recol(int c)
{
    if(c==cw)
        return W;
    if(c==cs)
        return S;
    if(c==ce)
        return E;
    if(c==cn)
        return N;
    return -1;
}
void program_pulibot()
{
    forn(a)forn(b)forn(c)forn(d)forn(e)
    {
        int Z=0;
        char A=T;
        int arr=findarrow(a,b,c,d,e);
        int zer=findnum(a,b,c,d,e,0);
        int one=findnum(a,b,c,d,e,1);
        int two=findnum(a,b,c,d,e,2);
        bool stt=isstart(a,b,c,d,e);
        bool edd=isend(a,b,c,d,e);
        if(a>2&&edd)
            Z=1,A=two;
        else if(a==2&&one!=H&&zer!=H)
            Z=2,A=zer;
        else if(a==2&&one!=H)
            Z=1,A=H;
        else if(a==1&&arr!=H&&one!=H)
            Z=1,A=arr;
        else if(a>2&&two==H&&arr!=H)
            Z=a,A=arr;
        else if(a>2&&two==H)
            Z=0,A=recol(a);
        else if(a==1&&stt&&one!=H)
            Z=1,A=T;
        else if(a==1&&one!=H)
            Z=1,A=two;
        else if(a==0&&stt)
            Z=2,A=H;
        else if(a==2&&arr!=H)
            Z=2,A=arr;
        else if(a>2&&two!=H)
            Z=2,A=H;
        else if(a==1&&zer!=H)
            Z=1,A=zer;
        else if(a==2&&arr==H&&zer!=H)
            Z=1,A=zer;
        else if(a==0&&one!=H)
            Z=col(one),A=one;
        else if(a==0&&two!=H)
            Z=col(two),A=two;
        else if(a==1&&stt)
            Z=2,A=H;
        else if(a==1&&two!=H)
            Z=0,A=two;
        else if(a==2&&two!=H)
            Z=0,A=two;
        SI(vector<int>{a,b,c,d,e},Z,A);
    }
    return;
}
#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...