Submission #1283375

#TimeUsernameProblemLanguageResultExecution timeMemory
1283375anfiRobot Contest (IOI23_robot)C++20
0 / 100
1096 ms336 KiB
#include "robot.h"
#include <bits/stdc++.h>
using namespace std;

const int nt = -4, ve = -3, sp = -2, bl = -1, pa = 0;
const int w = 1, s = 2, e = 3, n = 4;
const string c = "HWSEN";
int po = 0;

pair<char,int> now(int x){
    return {c[x], x};
}

int pr(int x){
    return x % 4 + 1;
}

int nx(int x){
    return (x + 1) % 4 + 1;
}

pair<char,int> cek(vector<int> &v){
    for(int i = 0; i < 5; i++) v[i]--;
    bool st = (v[w] == ve && v[n] == ve);
    bool en = (v[e] == ve && v[s] == ve);

    if(v[po] == bl){
        if(st){
            if(v[s] == bl) return now(s);
            if(v[e] == bl) return now(e);
            return {'-', nt};
        }
        if(en){
            return {'H', e};
        }
        for(int i = 1; i < 5; i++){
            if(v[i] == pr(i)) return now(i);
        }
        return {'-', nt};
    }

    if(v[po] <= pa) return {'-', nt};

    if(v[v[po]] == pr(v[po])){
        int i = nx(v[po]);
        while(v[i] != bl && v[i] != pr(i)) i = nx(i);
        return now(i);
    }

    for(int i = 1; i < 5; i++){
        if(v[i] == pr(i)) return {c[i], v[po]};
    }

    if(st || count(v.begin(), v.end(), pa) > 0){
        if(en) return {'T', pa};
        else return {c[v[po]], pa};
    }

    return {c[v[po]], bl};
}

void program_pulibot(){
    vector<int> s(5);
    for(s[0] = -2; s[0] < 4; s[0]++){
        for(s[1] = -2; s[1] < 5; s[1]++){
            for(s[2] = -2; s[2] < 5; s[2]++){
                for(s[3] = -2; s[3] < 5; s[3]++){
                    for(s[4] = -2; s[4] < 5; s[4]++){
                        auto [act, val] = cek(s);
                        if(val != nt){
                            set_instruction(s, val + 1, act);
                        }
                    }
                }
            }
        }
    }
}
#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...