# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1226164 | eriksuenderhauf | Navigation 2 (JOI21_navigation2) | C++20 | 0 ms | 824 KiB |
#include "Anna.h"
#include <bits/stdc++.h>
using namespace std;
namespace {
} // namespace
void Anna(int N, int K, vector<int> R, vector<int> C) {
for (int r = 0; r < N; r++) {
for (int c = 0; c < N; c++) {
int i = (r % 3) * 3 + (c % 3);
if (i == 0) {
SetFlag(r, c, 1);
continue;
}
if (i == 8) {
SetFlag(r, c, 2);
continue;
}
int d = max(abs(R[i - 1] - r), abs(C[i - 1] - c));
int v;
if (d <= 1) {
v = (R[i - 1] - r + 1) * 3 + (C[i - 1] - c + 1) + 2;
} else {
v = 11;
if (R[i - 1] > r)
v += 0;
else if (R[i - 1] < r)
v += 1;
else if (C[i - 1] > c)
v += 2;
else if (C[i - 1] < c)
v += 3;
}
SetFlag(r, c, v);
}
}
}
#include "Bruno.h"
#include <bits/stdc++.h>
using namespace std;
namespace {
} // namespace
vector<int> Bruno(int K, vector<int> value) {
int r, c;
for (int i = 0; i < 9; i++) {
if (value[i] == 1) {
r = i / 3;
c = i % 3;
break;
}
}
vector<int> res(K, 0);
for (int i = 0; i < K; i++) {
int cc = (c + i + 1) % 3;
int rr = (r + (i + 1) / 3) % 3;
int v = value[3 * rr + cc];
if (2 <= v && v < 11) {
v -= 2;
int dc = v % 3 - 1;
int dr = v / 3 - 1;
rr += dr;
cc += dc;
if (rr > r)
v = 0;
else if (rr < r)
v = 1;
else if (cc > c)
v = 2;
else if (cc < c)
v = 3;
} else {
v -= 11;
}
res[i] = v;
}
return res;
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |