Submission #1226181

#TimeUsernameProblemLanguageResultExecution timeMemory
1226181eriksuenderhaufNavigation 2 (JOI21_navigation2)C++20
0 / 100
0 ms816 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 += 2;
        else if (R[i - 1] < r)
          v += 3;
        else if (C[i - 1] > c)
          v += 0;
        else if (C[i - 1] < c)
          v += 1;
      }
      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, 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;
    }
  }
  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;
      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 -= 11;
    }
    res[i] = v;
  }
  return res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...