Submission #473803

#TimeUsernameProblemLanguageResultExecution timeMemory
473803qwerasdfzxclNavigation 2 (JOI21_navigation2)C++17
75 / 100
876 ms896 KiB
#include "Anna.h"
#include <bits/stdc++.h>

typedef long long ll;
using namespace std;

namespace {



} // namespace

void Anna(int N, int K, std::vector<int> R, std::vector<int> C) {
    for (int i=0;i<N;i++){
        for (int j=0;j<N;j++){
            int num = (i%3)*3+j%3;
            if (!num) SetFlag(i, j, 14);
            else if (num==8) SetFlag(i, j, 1);
            else{
                num--;
                if (R[num]<i-1) SetFlag(i, j, 4);
                else if (R[num]>i+1) SetFlag(i, j, 3);
                else if (C[num]<j-1) SetFlag(i, j, 2);
                else if (C[num]>j+1) SetFlag(i, j, 1);
                else{
                    for (int x=-1, val=5;x<=1;x++){
                        for (int y=-1;y<=1;y++, val++){
                            if (i+x==R[num] && j+y==C[num]) SetFlag(i, j, val);
                        }
                    }
                }
            }
        }
    }
}
#include "Bruno.h"
#include <bits/stdc++.h>

typedef long long ll;
using namespace std;

namespace {


} // namespace

std::vector<int> Bruno(int K, std::vector<int> value) {
    vector<int> ret(7);
    int pivot = -1;
    for (int i=0;i<9;i++) if (value[i]==14) pivot = i;
    assert(pivot!=-1);

    for (int i=-1, k=0;i<=1;i++){
        for (int j=-1;j<=1;j++, k++){
            int num = (i+3-(pivot/3)+1)%3*3 + (j+3-(pivot%3)+1)%3;
            if (num==0 || num==8) continue;
            num--;
            if (value[k]<=4) ret[num] = value[k]-1;
            else{
                int ex = -1e9, ey = -1e9;
                for (int x=-1, val=5;x<=1;x++){
                    for (int y=-1;y<=1;y++, val++){
                        if (value[k]==val) ex = i+x, ey = j+y;
                    }
                }
                assert(ex!=-1e9 && ey!=-1e9);
                if (ex<0) ret[num] = 3;
                else if (ex>0) ret[num] = 2;
                else if (ey<0) ret[num] = 1;
                else if (ey>0) ret[num] = 0;
                else ret[num] = 4;
            }
        }
    }
    return ret;
}
#Verdict Execution timeMemoryGrader output
Fetching results...