제출 #57265

#제출 시각아이디문제언어결과실행 시간메모리
57265thiago4532무지개나라 (APIO17_rainbow)C++17
11 / 100
29 ms2396 KiB
#include <bits/stdc++.h> #include "rainbow.h" using namespace std; const int maxn = 60; bool mat[maxn][maxn]; int l[] = {-1, 1, 0, 0}; int c[] = {0, 0, -1, 1}; int n, m, pi, pj, mark[maxn][maxn]; int num=0; int li, lj, ri, rj; void dfs(int i, int j){ for(int k=0; k<4; k++){ int i2 = i+l[k], j2 = j+c[k]; if(i2 < li || i2 > ri || j2 < lj || j2 > rj || mat[i2][j2] || mark[i2][j2]) continue; mark[i2][j2] = mark[i][j]; dfs(i2, j2); } } void init(int R, int C, int sr, int sc, int M, char *S) { n = R, m = C; pi = sr, pj = sc; mat[sr][sc] = 1; for(int i=0;i<M;i++){ if(S[i] == 'N') --sr; else if(S[i] == 'S') ++sr; else if(S[i] == 'W') --sc; else if(S[i] == 'E') ++sc; mat[sr][sc] = 1; } } int colour(int ar, int ac, int br, int bc) { num = 0; li = ar, lj = ac, ri = br, rj = bc; for(int i=li;i<=ri;i++){ for(int j=lj;j<=rj;j++){ mark[i][j] = 0; } } for(int i=li;i<=ri;i++){ for(int j=lj;j<=rj;j++){ if(mark[i][j] || mat[i][j]) continue; mark[i][j] = ++num; dfs(i, j); } } return num; }
#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...