# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1226241 | eriksuenderhauf | Navigation 2 (JOI21_navigation2) | C++20 | 281 ms | 932 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) {
vector<vector<int>> arr(N, vector<int>(N, 0));
for (int r = 0; r < N; r++) {
for (int c = 0; c < N; c++) {
int i = (r % 3) * 3 + (c % 3);
if (i == 0) {
arr[r][c] = 1;
continue;
}
if (i == 8) {
arr[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) + 6;
} else {
v = 2;
if (R[i - 1] > r + 1)
v += 2;
else if (R[i - 1] < r - 1)
v += 3;
else if (C[i - 1] > c + 1)
v += 0;
else if (C[i - 1] < c - 1)
v += 1;
}
arr[r][c] = v;
}
}
vector<int> used(15);
for (int r = 0; r < N; r++)
for (int c = 0; c < N; c++)
used[arr[r][c]] = 1;
int x = 6;
for (int i = 14; i >= 6; i--)
if (!used[i])
x = i;
if (x != 14) {
for (int r = 0; r < N; r++)
for (int c = 0; c < N; c++) {
int i = (r % 3) * 3 + (c % 3);
if (i == 8)
arr[r][c] = x;
if (arr[r][c] > x)
arr[r][c]--;
}
}
for (int r = 0; r < N; r++)
for (int c = 0; c < N; c++)
SetFlag(r, c, arr[r][c]);
}
#include "Bruno.h"
#include <bits/stdc++.h>
using namespace std;
namespace {
} // namespace
vector<int> Bruno(int K, vector<int> value) {
int r, c, cur_r, cur_c;
for (int i = 0; i < 9; i++) {
if (value[i] == 1) {
r = i / 3;
c = i % 3;
cur_r = r + 1 - i / 3;
cur_c = c + 1 - (i % 3);
break;
}
}
int unused = value[3 * ((r + 2) % 3) + (c + 2) % 3];
if (unused < 6)
unused = 14;
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 (v >= 6) {
v += v >= unused;
v -= 6;
int dc = v % 3 - 1;
int dr = v / 3 - 1;
cc += dc;
rr += dr;
if (rr > cur_r)
v = 2;
else if (rr < cur_r)
v = 3;
else if (cc > cur_c)
v = 0;
else if (cc < cur_c)
v = 1;
else
v = 4;
} else {
v -= 2;
}
res[i] = v;
}
return res;
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |