# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1217582 | mychecksedad | Navigation 2 (JOI21_navigation2) | C++20 | 293 ms | 876 KiB |
#include "Anna.h"
#include<bits/stdc++.h>
using namespace std;
#define ll long long int
#define MOD (1000000000+7)
#define MOD1 (998244353)
#define pb push_back
#define all(x) x.begin(), x.end()
#define en cout << '\n'
#define ff first
#define ss second
#define pii pair<int,int>
#define vi vector<int>
const int N = 3e6+100, M = 1e5+10, K = 52, MX = 30, FFF = 1e8+1;
namespace {
int FunctionExample(int r, int c, int K) {
return (r + c) % K + 1;
}
} // namespace
void Anna(int n, int k, std::vector<int> R, std::vector<int> C) {
int arr[3][3] = {
{0, 1, 2},
{3, 4, 5},
{6, 7, 8}
};
// for(int i = 0; i < k; ++i) cerr << R[i] << ' ' << C[i] << '\n';
for(int i = 0; i < n; ++i){
for(int j = 0; j < n; ++j){
int pos = (i%3)*3 + (j%3);
if(pos == 0){
SetFlag(i, j, 1);
}else{
if(pos < 8){
--pos;
int x_dif = R[pos] - i, y_dif = C[pos] - j;
// cerr << i << ' ' << j << ' ' << x_dif << ' ' << y_dif << " wtf\n";
if(abs(x_dif) <= 1 && abs(y_dif) <= 1){
SetFlag(i, j, arr[x_dif + 1][y_dif + 1] + 2);
}else{
if(abs(y_dif) >= abs(x_dif)){
if(y_dif > 0) SetFlag(i, j, 11);
else SetFlag(i, j, 12);
}else{
if(x_dif > 0) SetFlag(i, j, 13);
else SetFlag(i, j, 14);
}
}
}else{
SetFlag(i, j, 13);
}
}
}
}
}
#include "Bruno.h"
#include<bits/stdc++.h>
using namespace std;
#define ll long long int
#define MOD (1000000000+7)
#define MOD1 (998244353)
#define pb push_back
#define all(x) x.begin(), x.end()
#define en cout << '\n'
#define ff first
#define ss second
#define pii pair<int,int>
#define vi vector<int>
const int N = 3e6+100, M = 1e5+10, K = 52, MX = 30, FFF = 1e8+1;
namespace {
int variable_example = 1;
} // namespace
std::vector<int> Bruno(int k, std::vector<int> value) {
std::vector<int> res(k, 0);
int x = 0, y = 0;
vector<vector<int>> v(3, vi(3));
for(int i = 0; i < 3; ++i) for(int j =0 ; j < 3; ++j) v[i][j] = value[i*3 + j];
for(int i = 0; i < 3; ++i){
for(int j = 0; j < 3; ++j) if(v[i][j] == 1) x = i, y = j;
}
cerr << '\n';
cerr << '\n';
for(int i = 0; i < 3; ++i){ for(int j = 0; j < 3; ++j) cerr << v[i][j] << ' '; cerr << '\n';}
cerr << '\n';
int arr[9][2] = {
{-1, -1},
{-1, 0},
{-1, 1},
{0, -1},
{0, 0},
{0, 1},
{1, -1},
{1, 0},
{1, 1}
};
int cur = 0;
for(int i = 0; i < 3; ++i){
for(int j = 0; j < 3; ++j){
if(i==0 && j==0) continue;
int X = (x + i) % 3, Y = (y + j) % 3;
if(cur == 8){
assert(v[X][Y] == 13);
continue;
}
if(v[X][Y] <= 10){
int w = v[X][Y] - 2;
int new_x = arr[w][0] + X, new_y = arr[w][1] + Y;
int x_dif = new_x - 1, y_dif = new_y - 1;
if(x_dif == 0 && y_dif == 0) res[cur] = 4;
else if(y_dif > 0) res[cur] = 0;
else if(y_dif < 0) res[cur] = 1;
else if(x_dif > 0) res[cur] = 2;
else res[cur] = 3;
}else{
res[cur] = v[X][Y] - 11;
}
++cur;
}
}
// for(int i = 0; i < 7; ++i) cerr << res[i] << ' ';
return res;
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |