# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
486653 | alextodoran | Navigation 2 (JOI21_navigation2) | C++17 | 801 ms | 872 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.
/**
____ ____ ____ ____ ____
||a |||t |||o |||d |||o ||
||__|||__|||__|||__|||__||
|/__\|/__\|/__\|/__\|/__\|
**/
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int East = 0;
const int West = 1;
const int South = 2;
const int North = 3;
const int Finish = 4;
#include "Anna.h"
void SetFlag (int r, int c, int value);
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 value = 0;
int currPow = 1;
for(int t = (r + c) % 2; t < K; t += 2)
{
int currVal;
if(r == R[t] && c == C[t])
currVal = Finish;
else if(r < R[t])
currVal = South;
else if(r > R[t])
currVal = North;
else if(c < C[t])
currVal = East;
else if(c > C[t])
currVal = West;
value += currVal * currPow;
currPow *= 5;
}
if((r + c) % 2 == 1)
value += 5 * 5 * 5 * 5;
SetFlag(r, c, value + 1);
}
}
/**
____ ____ ____ ____ ____
||a |||t |||o |||d |||o ||
||__|||__|||__|||__|||__||
|/__\|/__\|/__\|/__\|/__\|
**/
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int East = 0;
const int West = 1;
const int South = 2;
const int North = 3;
const int Finish = 4;
#include "Bruno.h"
vector <int> Bruno (int K, vector <int> value)
{
bool parity;
int mat[3][3];
for(int i = 0; i < 3; i++)
for(int j = 0; j < 3; j++)
mat[i][j] = value[i * 3 + j] - 1;
parity = (mat[1][1] >= 5 * 5 * 5 * 5);
for(int i = 0; i < 3; i++)
for(int j = 0; j < 3; j++)
if(mat[i][j] >= 5 * 5 * 5 * 5)
mat[i][j] -= 5 * 5 * 5 * 5;
vector <int> sol (K);
for(int t = parity; t < K; t += 2)
{
sol[t] = mat[1][1] % 5;
mat[1][1] /= 5;
}
for(int t = !parity; t < K; t += 2)
{
int vals[] = {mat[1][2] % 5, mat[1][0] % 5, mat[2][1] % 5, mat[0][1] % 5};
if(vals[East] != West)
sol[t] = (vals[East] == Finish ? East : vals[East]);
else if(vals[West] != East)
sol[t] = (vals[West] == Finish ? West : vals[West]);
else if(vals[South] != North)
sol[t] = (vals[South] == Finish ? South : vals[South]);
else if(vals[North] != South)
sol[t] = (vals[North] == Finish ? North : vals[North]);
else
sol[t] = Finish;
for(int i = 0; i < 3; i++)
for(int j = 0; j < 3; j++)
mat[i][j] /= 5;
}
return sol;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |