제출 #1258172

#제출 시각아이디문제언어결과실행 시간메모리
1258172mkkkkkkkk장애물 (IOI25_obstacles)C++20
37 / 100
79 ms49224 KiB
#include "obstacles.h" #include <bits/stdc++.h> using namespace std; int N,M; bool arr[3][200000],vis[3][200000]; int arr2[3][200000]; void dfs(int i,int j,int br) { vis[i][j]=true; arr2[i][j]=br; if(i>0 && arr[i-1][j]==true && vis[i-1][j]==false) dfs(i-1,j,br); if(j>0 && arr[i][j-1]==true && vis[i][j-1]==false) dfs(i,j-1,br); if(i<N-1 && arr[i+1][j]==true && vis[i+1][j]==false) dfs(i+1,j,br); if(j<M-1 && arr[i][j+1]==true && vis[i][j+1]==false) dfs(i,j+1,br); } void initialize(vector<int> T, vector<int> H) { N=T.size(); M=H.size(); if(T.size()<=3) { for(int i=0;i<N;i++) { for(int j=0;j<H.size();j++) { if(T[i]>H[j]) { arr[i][j]=true; } else arr[i][j]=false; } } } else { for(int j=0;j<H.size();j++) { if(T[N-1]>H[j]) { arr[0][j]=true; } else arr[0][j]=false; } N=1; } int br=1; for(int i=0;i<N;i++) { for(int j=0;j<M;j++) { if(vis[i][j]==false && arr[i][j]==true) { dfs(i,j,br); br++; } } } return; } bool can_reach(int L, int R, int S, int D) { if(arr2[0][S]==arr2[0][D]) return true; return false; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...