| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 | 
|---|---|---|---|---|---|---|---|
| 1227667 | KindaGoodGames | Navigation 2 (JOI21_navigation2) | C++20 | 0 ms | 804 KiB | 
#include "Anna.h"
#include <bits/stdc++.h>
using namespace std;
#define tiii tuple<int,int,int>
namespace {
  int INF = numeric_limits<int>::max()/2; 
} // namespace
void Anna(int n, int K, std::vector<int> R, std::vector<int> C) { 
  vector<vector<short>> result(n,vector<short>(n,1));
  vector<bitset<101>> vis(n);
  vector<vector<int>> mode(n, vector<int>(n,INF));
  vector<tiii> q;
  q.reserve(n*n*K);
  int pt = 0;
  for(int k = 0; k < K; k++){
    
      for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++){
          mode[i][j] = INF;
          vis[i][j] = false;
        }
      }
      q.push_back({5, R[k], C[k]});
      auto psh = [&](int m, int r, int c){
        if(r < 0 || r >= n) return;
        if(c < 0 || c >= n) return;
        if(vis[r][c]) return;
        vis[r][c] = true;
        q.push_back({m,r,c});
      };
      //BFS
      while(pt < q.size()){
        int m,r,c;
        tie(m,r,c) = q[pt++];
        if(m != 5)mode[r][c] = m;
        /* 
          > : 0
          < : 1
          v : 2
          ^ : 3
        */
        psh(1,r,c+1);
        psh(0,r,c-1);
        psh(3,r+1,c);
        psh(2,r-1,c);
      }
      for (int r = 0; r < n; r++) {
        for (int c = 0; c < n; c++) {  
            if(mode[r][c] != INF) result[r][c] += ((1<<(2*k)) * mode[r][c]);   
        }
      }
  }
 
  for (int r = 0; r < n; r++) {
    for (int c = 0; c < n; c++) { 
      SetFlag(r,c,result[r][c]);
    }
  }
}
#include "Bruno.h"
#include <vector>
namespace {
int toInd(int dr, int dc){
  dr += 1;
  dc += 1;
  return (dr*3)+dc;
}
int conv(int v, int k){
  v >>= (2*k);
  v %= 4;
  return v;
}
} // namespace  
std::vector<int> Bruno(int K, std::vector<int> value) { 
  std::vector<int> res(K, 0);
  for(int i = 0; i < value.size(); i++){
    value[i]--;
  }
  for (int i = 0; i < K; i++) {
    bool isGoal = true;
    if(conv(value[toInd(0,-1)],i) != 0) {
      isGoal = false;
    }
    if(conv(value[toInd(0,1)],i) != 1) {
      isGoal = false;
    }
    if(conv(value[toInd(-1,0)],i) != 2) {
      isGoal = false;
    }
    if(conv(value[toInd(1,0)],i) != 3) {
      isGoal = false;
    }
    if(isGoal){
      res[i] = 4;
    }else{
      int cur = conv(value[4],i);
      res[i] = cur;
    }
  }
  return res;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
