제출 #1205462

#제출 시각아이디문제언어결과실행 시간메모리
1205462PagodePaiva로봇 대회 (IOI23_robot)C++20
26 / 100
132 ms5836 KiB
#include "robot.h"
#include<bits/stdc++.h>

using namespace std;

char letra(int x){
    if(x == 1)
        return 'W';
    if(x == 2)
        return 'S';
    if(x == 3)
        return 'E';
    return 'N';
}

void limpar(vector <int> &v){
    for(int i = 2;i < 4;i++){
        if(v[i] == 3){
            set_instruction(v, v[0], letra(i));
            return;
        }
    }
    if(v[0] == 4){
        for(int i = 1;i < 5;i += 3){
            if(v[i] == 1 or v[i] == 4){
                set_instruction(v, 0, letra(i));
                return;
            }
        }
    }
    else{
        for(int i = 1;i < 5;i += 3){
            if(v[i] == 2){
                set_instruction(v, 1, letra(i));
                return;
            }
        }
        set_instruction(v, 1, 'T');
    }
}

void backtrack(vector <int> &v){
    if(v.size() == 5){
        /*for(auto x : v){
            cout << x << ' ';
        }
        cout << '\n';*/
        if(v[0] == 0){
            set_instruction(v, 2, 'H');
            return;
        }
        if(v[2] == -2 and v[3] == -2){
            for(int i = 1;i < 5;i += 3){
                if(v[i] == 2){
                    set_instruction(v, 1, letra(i));
                    return;
                }
            }
        }
        if(v[0] == 2){
            for(int i = 2;i < 4;i++){
                if(v[i] == 1){
                    set_instruction(v, 1, 'H');
                    return;
                }
            }
        }
        if(v[0] == 1 or v[0] == 4){
            limpar(v);
            return;
        }
        if(v[0] == 2){
            for(int i = 2;i < 4;i++){
                if(v[i] == 0){
                    set_instruction(v, 2, letra(i));
                    return;
                }
            }
            for(int i = 1;i < 5;i += 3){
                if(v[i] == 2){
                    set_instruction(v, 3, letra(i));
                    return;
                }
            }
        }
        if(v[0] == 3){
            set_instruction(v, 4, 'H');
            return;
        }
        return;
    }
    for(int i = -2;i < 5;i++){
        v.push_back(i);
        backtrack(v);
        v.pop_back();
    }
    return;
}
void program_pulibot(){
    /*
    set_instruction({0, -2, -1, 0, -2}, 1, 'E');
    set_instruction({0, 1, -1, 0, -2}, 1, 'E');
    set_instruction({0, 1, 0, -2, -2}, 1, 'S');
    set_instruction({0, -1, -2, -2, 1}, 1, 'T');
    */
    vector <int> v = {};
    backtrack(v);
}
#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...