Submission #1163728

#TimeUsernameProblemLanguageResultExecution timeMemory
1163728HasanV11010238Navigation 2 (JOI21_navigation2)C++20
0 / 100
0 ms792 KiB
#include "Anna.h"
#include <vector>
using namespace std;
namespace {
vector<int> x, y;
int FunctionExample(int r, int c, int K) {
    int su = 3 * (r % 3) + c % 3;
    int wh = 0;
    for (int i = 0; i < x.size(); i++){
        if (x[i] == r && y[i] == c){
            wh = i + 1;
        }
    }
    if (su >= 7){
        return 56 + wh + 1;
    }
    else{
        int dir = -1;
        if (y[su] > c){
            dir = 0;
        }
        else if (y[su] < c){
            dir = 1;
        }
        else if (x[su] > r){
            dir = 2;
        }
        else{
            dir = 3;
        }
        if (dir == -1){
            return 32 + su + 1;
        }
        return 8 * dir + wh + 1; 
    }
}
} // namespace

void Anna(int N, int K, std::vector<int> R, std::vector<int> C) {
    x = R, y = C;
    for (int i = 0; i < N; i++){
        for (int j = 0; j < N; j++){
            SetFlag(i, j, FunctionExample(i, j, K));
        }
    }
}
#include "Bruno.h"
#include <vector>
using namespace std;
namespace {
    vector<int> v;
int getdir(int x, int y){
    if (x == 1 && y == 1) return 4;
    if (y == 2) return 0;
    if (y == 0) return 1;
    if (x == 2) return 2;
    return 3;
}
int fi(int k){
    int sx, sy;
    for (int i = 0 ; i < 9; i++){
        int x = i / 3, y = i % 3;
        if (v[i] % 8 - 1 == k){
            return getdir(x, y);
        }
        if (v[i] >= 56){
            sx = x, sy = y;
        }
    }
    sx = 2 - sx, sy = 2 - sy;
    for (int i = 0; i < 9; i++){
        int x = i / 3, y = i % 3;
        int nx = (x + sx) % 3, ny = (y + sy) % 3;
        if (nx * 3 + ny == k){
            return v[i] / 8;
        }
    }
    return 0;
}
}
std::vector<int> Bruno(int K, std::vector<int> value) {
    vector<int> res(K, 0);
    v = value;
    for (int i = 0; i < 9; i++){
        v[i]--;
    }
    for (int i = 0; i < K; i++){
        res[i] = fi(i);
    }
    return res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...