# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
478043 | flappybird | Navigation 2 (JOI21_navigation2) | C++17 | 951 ms | 1024 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "Anna.h"
#include <bits/stdc++.h>
typedef int ll;
using namespace std;
namespace {
ll N;
ll mp[200][200];
ll flag[200][200];
bool chk(ll i, ll j) {
return 0 <= i && i < N && 0 <= j && j < N;
}
} // namespace
void Anna(int N, int K, std::vector<int> R, std::vector<int> C) {
::N = N;
ll i, j, k;
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) mp[i][j] = flag[i][j] = 0;
}
vector<vector<ll>> v(3, vector<ll>(3));
v[(R[0] + 1) % 3][(C[0] + 1) % 3] = 1;
v[(R[1] + 1) % 3][(C[1]) % 3] = 1;
v[(R[2] + 1) % 3][(C[2] + 2) % 3] = 1;
v[(R[3]) % 3][(C[3] + 1) % 3] = 1;
v[(R[4]) % 3][(C[4] + 2) % 3] = 1;
v[(R[5] + 2) % 3][(C[5] + 1) % 3] = 1;
v[(R[6] + 2) % 3][(C[6] + 2) % 3] = 1;
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
if (!v[i][j]) goto a;
}
}
a:
ll p = i, q = j;
for (i = p - 3; i < N + 3; i += 3) {
for (j = q - 3; j < N + 3; j += 3) {
if (chk(i, j)) mp[i][j] = 12;
if (chk(i - 1, j - 1)) mp[i - 1][j - 1] = 0;
if (chk(i - 1, j)) mp[i - 1][j] = 1;
if (chk(i - 1, j + 1)) mp[i - 1][j + 1] = 2;
if (chk(i, j - 1)) mp[i][j - 1] = 3;
if (chk(i, j + 1)) mp[i][j + 1] = 4;
if (chk(i + 1, j - 1)) mp[i + 1][j - 1] = 5;
if (chk(i + 1, j)) mp[i + 1][j] = -1;
if (chk(i + 1, j + 1)) mp[i + 1][j + 1] = 6;
}
}
vector<ll> asdf(13);
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
ll f;
if (0 <= mp[i][j] && mp[i][j] <= 6) {
f = mp[i][j];
ll r = R[f];
ll c = C[f];
if (max(abs(r - i), abs(c - j)) <= 1) {
if (r == i - 1 && c == j - 1) flag[i][j] = 5;
else if (r == i - 1 && c == j) flag[i][j] = 6;
else if (r == i - 1 && c == j + 1) flag[i][j] = 7;
else if (r == i && c == j - 1) flag[i][j] = 8;
else if (r == i && c == j + 1) flag[i][j] = 9;
else if (r == i + 1 && c == j - 1) flag[i][j] = 10;
else if (r == i + 1 && c == j) flag[i][j] = 11;
else if (r == i + 1 && c == j + 1) flag[i][j] = 12;
}
else {
if (r + 1 < i) flag[i][j] = 1;
else if (i + 1 < r) flag[i][j] = 2;
else if (c < j) flag[i][j] = 3;
else flag[i][j] = 4;
}
asdf[flag[i][j]] = 1;
}
}
}
ll c;
for (i = 5; i <= 12; i++) if (asdf[i] == 0) break;
c = i;
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
if (mp[i][j] == -1) SetFlag(i, j, c - 4);
else if (flag[i][j] == 0) SetFlag(i, j, 12);
else if (flag[i][j] > c) SetFlag(i, j, flag[i][j] - 1);
else SetFlag(i, j, flag[i][j]);
}
}
}
#include "Bruno.h"
#include <bits/stdc++.h>
using namespace std;
typedef int ll;
/*
3
140
2
*/
namespace {
int variable_example = 1;
ll f(pair<ll, ll> p) {
if (!p.first && !p.second) return 4;
if (p.second < 0) return 1;
if (p.second > 0) return 0;
if (p.first > 0) return 2;
else return 3;
}
} // namespace
std::vector<int> Bruno(int K, std::vector<int> value) {
vector<ll> ret(7);
ll c;
for (c = 0; c < 9; c++) if (value[c] == 12) break;
ll x = value[(c + 3) % 9] + 4;
ll xl = (c + 3) % 9;
ll i;
vector<pair<ll, ll>> loc(9);
for (i = 0; i < 9; i++) {
if (i == c || i == xl) continue;
if (value[i] >= x) value[i]++;
if (value[i] == 1) loc[i] = { -3, 0 };
else if (value[i] == 2) loc[i] = { 3, 0 };
else if (value[i] == 3) loc[i] = { 0, -3 };
else if (value[i] == 4) loc[i] = { 0, 3 };
else {
if (value[i] == 5) loc[i] = { -1, -1 };
if (value[i] == 6) loc[i] = { -1, 0 };
if (value[i] == 7) loc[i] = { -1, 1 };
if (value[i] == 8) loc[i] = { 0, -1 };
if (value[i] == 9) loc[i] = { 0, 1 };
if (value[i] == 10) loc[i] = { 1, -1 };
if (value[i] == 11) loc[i] = { 1, 0 };
if (value[i] == 12) loc[i] = { 1, 1 };
loc[i].first += i / 3;
loc[i].second += i % 3;
loc[i].first--;
loc[i].second--;
}
}
if (c % 3 == 0) {
ret[0] = f(loc[(c + 8) % 9]);
ret[1] = f(loc[(c + 6) % 9]);
ret[2] = f(loc[(c + 7) % 9]);
ret[3] = f(loc[(c + 2) % 9]);
ret[4] = f(loc[(c + 1) % 9]);
ret[5] = f(loc[(c + 5) % 9]);
ret[6] = f(loc[(c + 4) % 9]);
}
if (c % 3 == 1) {
ret[0] = f(loc[(c + 5) % 9]);
ret[1] = f(loc[(c + 6) % 9]);
ret[2] = f(loc[(c + 7) % 9]);
ret[3] = f(loc[(c + 8) % 9]);
ret[4] = f(loc[(c + 1) % 9]);
ret[5] = f(loc[(c + 2) % 9]);
ret[6] = f(loc[(c + 4) % 9]);
}
if (c % 3 == 2) {
ret[0] = f(loc[(c + 5) % 9]);
ret[1] = f(loc[(c + 6) % 9]);
ret[2] = f(loc[(c + 4) % 9]);
ret[3] = f(loc[(c + 8) % 9]);
ret[4] = f(loc[(c + 7) % 9]);
ret[5] = f(loc[(c + 2) % 9]);
ret[6] = f(loc[(c + 1) % 9]);
}
return ret;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |