| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 | 
|---|---|---|---|---|---|---|---|
| 1227692 | KindaGoodGames | Navigation 2 (JOI21_navigation2) | C++20 | 848 ms | 590144 KiB | 
#include "Anna.h"
#include <bits/stdc++.h>
using namespace std;
#define tiiii tuple<int,int,int,int>
namespace {
  int INF = numeric_limits<int>::max()/2; 
  short result[100][100];
  short mode[100][100];
  bitset<100> vis[100];
  int n;
  
  
  queue<tiiii> q;
  void psh(int d, int m, int r, int c){
    if(r < 0 || r >= n) return;
    if(c < 0 || c >= n) return;
    if(vis[r][c]) return;
    q.push({d,m,r,c});
  };
} // namespace
void Anna(int N, int K, std::vector<int> R, std::vector<int> C) { 
  n = N;
  for(int i = 0; i <n;i++){
    for(int j = 0; j < n; j++){
      result[i][j] = 1; 
    }
  }
  for(int k = 0; k < K; k++){
    
      for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++){
          mode[i][j] = 6;
          vis[i][j] = false;
        }
      }
      q.push({0, 5, R[k], C[k]});
      
      //BFS
      while(q.size()){
        int d,m,r,c;
        tie(d,m,r,c) = q.front(); q.pop();
        vis[r][c] = true;
        if(m != 5)mode[r][c] = m;
        /* 
          > : 0
          < : 1
          v : 2
          ^ : 3
        */
        psh(d+1,1,r,c+1);
        psh(d+1,0,r,c-1);
        psh(d+1,3,r+1,c);
        psh(d+1,2,r-1,c);
      }
      for (int r = 0; r < n; r++) {
        for (int c = 0; c < n; c++) {  
            if(mode[r][c] <= 3) 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... | ||||
