Submission #1244325

#TimeUsernameProblemLanguageResultExecution timeMemory
1244325candi_ositos로봇 대회 (IOI23_robot)C++20
16 / 100
71 ms5448 KiB
#include "robot.h"
#include <bits/stdc++.h>
#define li -2
#define wa -1
#define ns 0
#define md 3
#define exp 2
#define ret 1
#define dr 0
using namespace std;
void p(vector <int> a, int b, char c){
    vector <int> aux(5);
    aux[0]=a[0];
    aux[1]=a[4];
    aux[2]=a[3];
    aux[3]=a[2];
    aux[4]=a[1];
    set_instruction(aux, b, c);
    return;
}
void program_pulibot()
{
    p({ns, li, wa, ns, li}, exp, 'S');//esquina noroeste
    p({ns, li, ns, ns, li}, exp, 'E');
    p({ns, li, ns, wa, li}, exp, 'E');

    p({ns, li, li, ns, exp}, exp, 'S');//esquina noreste
    p({ns, li, li, wa, exp}, md, 'W');

    p({ns, exp, wa, li, li}, md, 'N');//esquina suroeste
    p({ns, exp, ns, li, li}, exp, 'E');

    p({ns, exp, li, li, wa}, ret, 'N');//esquina sureste
    p({ns, wa, li, li, exp}, ret, 'W');
    p({ns, exp, li, li, ns}, ret, 'N');
    p({ns, ns, li, li, exp}, ret, 'W');


    p({ns, li, wa, exp, ns}, md, 'S');//limite arriba exp
    p({ns, li, wa, exp, wa}, md, 'S');
    p({ns, li, ns, exp, ns}, exp, 'E');
    p({ns, li, ns, exp, wa}, exp, 'E');
    p({ns, li, wa, wa, exp}, md, 'W');
    p({ns, li, ns, ns, exp}, exp, 'E');
    p({ns, li, ns, wa, exp}, exp, 'E');
    p({ns, li, wa, ns, exp}, exp, 'S');

    p({ns, exp, wa, li, ns}, md, 'N');//limite abajo exp
    p({ns, exp, wa, li, wa}, md, 'N');
    p({ns, exp, ns, li, ns}, exp, 'E');
    p({ns, exp, ns, li, wa}, exp, 'E');
    p({ns, wa, wa, li, exp}, md, 'W');
    p({ns, ns, ns, li, exp}, exp, 'E');
    p({ns, wa, ns, li, exp}, exp, 'E');
    p({ns, ns, wa, li, exp}, exp, 'N');

    p({ns, ns, li, wa, exp}, md, 'W');//limite derecha exp
    p({ns, wa, li, wa, exp}, md, 'W');
    p({ns, ns, li, ns, exp}, exp, 'S');
    p({ns, wa, li, ns, exp}, exp, 'S');
    p({ns, exp, li, wa, wa}, md, 'N');
    p({ns, exp, li, ns, ns}, exp, 'S');
    p({ns, exp, li, ns, wa}, exp, 'S');
    p({ns, exp, li, wa, ns}, exp, 'W');

    p({ns, ns, exp, wa, li}, md, 'E');//limite izquierda exp
    p({ns, wa, exp, wa, li}, md, 'E');
    p({ns, ns, exp, ns, li}, exp, 'S');
    p({ns, wa, exp, ns, li}, exp, 'S');
    p({ns, exp, wa, wa, li}, md, 'N');
    p({ns, exp, ns, ns, li}, exp, 'S');
    p({ns, exp, wa, ns, li}, exp, 'S');
    p({ns, exp, ns, wa, li}, exp, 'E');


    p({ns, ns, ns, ns, exp}, exp, 'E');//centro todo
    p({ns, ns, ns, exp, ns}, exp, 'E');
    p({ns, ns, exp, ns, ns}, exp, 'S');
    p({ns, exp, ns, ns, ns}, exp, 'E');

    p({ns, wa, wa, wa, exp}, md, 'W');//centro block
    p({ns, wa, wa, exp, wa}, md, 'S');
    p({ns, wa, exp, wa, wa}, md, 'E');
    p({ns, exp, wa, wa, wa}, md, 'N');

    for(int i=0; i<4; ++i){//centro 2 paredes
        for(int j=0; j<4; ++j){
            if(j!=i){
                vector <int> pos;
                pos.assign(5, wa);
                pos[i+1]=exp;
                pos[j+1]=ns;
                pos[0]=ns;
                char aux='W';
                if(j==0){
                    aux='N';
                }
                else if(j==1){
                    aux='E';
                }
                else if(j==2){
                    aux='S';
                }
                p(pos, exp, aux);
            }
        }
    }

    for(int i=0; i<4; ++i){//centro una pared
        for(int j=0; j<4; ++j){
            if(j!=i){
                vector <int> pos;
                pos.assign(5, ns);
                pos[i+1]=exp;
                pos[j+1]=wa;
                char aux='W';
                int aguss=0;
                while(aguss==i || aguss==j){
                    ++aguss;
                }
                if(aguss==0){
                    aux='N';
                }
                else if(aguss==1){
                    aux='E';
                }
                else if(aguss==2){
                    aux='S';
                }
                p(pos, exp, aux);
            }
        }
    }


    p({ns, exp, exp, ns, ns}, exp, 'S');//centro 2 exp 0 wa
    p({ns, exp, ns, exp, ns}, exp, 'E');
    p({ns, exp, ns, ns, exp}, exp, 'E');
    p({ns, ns, exp, exp, ns}, exp, 'W');
    p({ns, ns, exp, ns, exp}, exp, 'S');
    p({ns, ns, ns, exp, exp}, exp, 'E');

    p({ns, exp, exp, wa, ns}, exp, 'W');//centro 2 exp 1 wa
    p({ns, exp, exp, ns, wa}, exp, 'S');
    p({ns, exp, ns, exp, wa}, exp, 'E');
    p({ns, exp, wa, exp, ns}, exp, 'W');
    p({ns, exp, ns, wa, exp}, exp, 'E');
    p({ns, exp, wa, ns, exp}, exp, 'S');
    p({ns, ns, exp, exp, wa}, exp, 'N');
    p({ns, wa, exp, exp, ns}, exp, 'W');
    p({ns, ns, exp, wa, exp}, exp, 'N');
    p({ns, wa, exp, ns, exp}, exp, 'S');
    p({ns, ns, wa, exp, exp}, exp, 'N');
    p({ns, wa, ns, exp, exp}, exp, 'E');

    p({ns, exp, exp, wa, wa}, md, 'N');//centro 2 exp 2 wa
    p({ns, exp, wa, exp, wa}, md, 'N');
    p({ns, exp, wa, wa, exp}, md, 'N');
    p({ns, wa, exp, exp, wa}, md, 'E');
    p({ns, wa, exp, wa, exp}, md, 'E');
    p({ns, wa, wa, exp, exp}, md, 'S');

    p({ns, exp, exp, exp, ns}, exp, 'W');//centro 3 exp
    p({ns, exp, exp, ns, exp}, exp, 'S');
    p({ns, exp, ns, exp, exp}, exp, 'E');
    p({ns, ns, exp, exp, exp}, exp, 'N');

    //--------------------------------

    p({exp, li, li, ret, exp}, ret, 'W');//ret esquina
    p({exp, exp, ret, li, li}, ret, 'N');

    p({exp, li, ret, exp, ns}, ret, 'S');//ret arriba
    p({exp, li, ret, exp, wa}, ret, 'S');
    p({exp, li, ret, ns, exp}, ret, 'W');
    p({exp, li, ret, wa, exp}, ret, 'W');
    p({exp, li, ns, ret, exp}, ret, 'W');
    p({exp, li, wa, ret, exp}, ret, 'W');

    p({exp, exp, ret, li, ns}, ret, 'N');//ret abajo
    p({exp, exp, ret, li, wa}, ret, 'N');
    p({exp, ns, ret, li, exp}, ret, 'W');
    p({exp, wa, ret, li, exp}, ret, 'W');
    p({exp, ret, ns, li, exp}, ret, 'W');
    p({exp, ret, wa, li, exp}, ret, 'W');

    p({exp, ns, li, ret, exp}, ret, 'W');//ret derecha
    p({exp, wa, li, ret, exp}, ret, 'W');
    p({exp, exp, li, ret, ns}, ret, 'N');
    p({exp, exp, li, ret, wa}, ret, 'N');
    p({exp, exp, li, ns, ret}, ret, 'N');
    p({exp, exp, li, wa, ret}, ret, 'N');

    p({exp, ns, exp, ret, li}, ret, 'E');//ret izquierda
    p({exp, wa, exp, ret, li}, ret, 'E');
    p({exp, exp, ns, ret, li}, ret, 'N');
    p({exp, exp, wa, ret, li}, ret, 'N');
    p({exp, exp, ret, ns, li}, ret, 'N');
    p({exp, exp, ret, wa, li}, ret, 'N');

    p({exp, li, wa, ret, li}, ret, 'T');//fin
    p({exp, li, ret, ns, li}, ret, 'T');
    p({exp, li, ns, ret, li}, ret, 'T');
    p({exp, li, ret, wa, li}, ret, 'T');

    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...