제출 #1117104

#제출 시각아이디문제언어결과실행 시간메모리
1117104gustavo_d무지개나라 (APIO17_rainbow)C++17
11 / 100
12 ms848 KiB
#include "rainbow.h" #include <bits/stdc++.h> using namespace std; map<char, pair<int, int>> ds; pair<int, int> moves[4] = { {0, -1}, {0, 1}, {1, 0}, {-1, 0}, }; bool mark[51][51]; int x, y; void init(int R, int C, int sr, int sc, int M, char *S) { x=R; y=C; ds['N'] = {-1, 0}; ds['S'] = {1, 0}; ds['E'] = {0, 1}; ds['W'] = {0, -1}; for (int i=0; i<=50; i++) mark[i][0] = true; for (int i=0; i<=50; i++) mark[0][i] = true; mark[sr][sc] = true; // cout << sr << ' ' << sc << endl; for (int i=0; i<M; i++) { char c = S[i]; sr += ds[c].first; sc += ds[c].second; mark[sr][sc] = true; // cout << sr << ' ' << sc << endl; } } bool tmp[51][51]; int lar, lac, lbr, lbc; void dfs(int i, int j) { if (i < lar or j < lac or i > lbr or j > lbc or tmp[i][j]) return; tmp[i][j] = true; for (pair<int, int> d : moves) { dfs(i + d.first, j + d.second); } } int colour(int ar, int ac, int br, int bc) { lar = ar; lac = ac; lbr = br; lbc = bc; int cnt = 0; for (int i=1; i<=50; i++) { for (int j=1; j<=50; j++) { tmp[i][j] = mark[i][j]; } } for (int r=ar; r<=br; r++) { for (int c=ac; c<=bc; c++) { if (!tmp[r][c]) { cnt++; dfs(r, c); } } } return cnt; }
#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...