답안 #403031

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
403031 2021-05-12T16:56:09 Z BERNARB01 무지개나라 (APIO17_rainbow) C++17
0 / 100
144 ms 4300 KB
#include "rainbow.h"
#include <bits/stdc++.h>

using namespace std;

const int N = 1002;

int a[N][N], vis[N][N], done[N][N], u, l, d, r;

array<int, 4> di = {0, 0, 1, -1};
array<int, 4> dj = {1, -1, 0, 0};


bool valid(int i, int j) {
	return (u <= i && i <= d && l <= j && j <= r && !vis[i][j] && !done[i][j]);
}

void dfs(int i, int j) {
	done[i][j] = 1;
	for (int k = 0; k < 4; k++) {
		int ni = i + di[k];
		int nj = j + dj[k];
		if (valid(ni, nj)) {
			dfs(ni, nj);
		}
	}
}

void init(int R, int C, int sr, int sc, int M, char *S) {
	u = 1; d = R;
	l = 1; r = C;
	for (int i = 0; i < M; i++) {
		if (S[i] == 'N') {
			sr--;
		} else if (S[i] == 'S') {
			sr++;
		} else if (S[i] == 'E') {
			sc++;
		} else {
			sc--;
		}
		if (valid(sr, sc)) {
			vis[sr][sc] = 1;
		}
	}
}

int colour(int ar, int ac, int br, int bc) {
	u = ar; d = br;
	l = ac; r = bc;
	int ans = 0;
	for (int i = u; i <= d; i++) {
		for (int j = l; j <= r; j++) {
			if (!vis[i][j] && !done[i][j]) {
				dfs(i, j);
				ans++;
			}
		}
	}
	memset(done, 0, sizeof done);
	return ans;
}

# 결과 실행 시간 메모리 Grader output
1 Incorrect 144 ms 4300 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 4 ms 4172 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 4172 KB Output isn't correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 144 ms 4300 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 144 ms 4300 KB Output isn't correct
2 Halted 0 ms 0 KB -