이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#include "rainbow.h"
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
#define ent "\n"
const int maxn = 1e6 + 100;
const ll INF = (1ll<<61);
const int MOD = 1e9 + 7;
const int inf = (1<<30);
const int maxl = 20;
const int P = 31;
int n, m;
int used[55][55];
int u[55][55];
int dx[] = {1, 0, -1, 0};
int dy[] = {0, 1, 0, -1};
void dfs(int x, int y, int l1, int r1, int l2, int r2){
if(used[x][y] || u[x][y] || x < l1 || x > r1 || y < l2 || y > r2) return;
u[x][y] = 1;
for(int i = 0; i < 4; i++){
dfs(x + dx[i], y + dy[i], l1, r1, l2, r2);
}
}
void init(int r, int c, int x, int y, int p, char s[]){
n = r; m = c;
used[x][y] = 1;
for(int i = 0; i < p; i++){
if(s[i] == 'N') x--;
else if(s[i] == 'W') y--;
else if(s[i] == 'E') y++;
else x++;
used[x][y] = 1;
}
}
int colour(int l1, int l2, int r1, int r2){
for(int i = l1; i <= r1; i++){
fill(u[i] + l2, u[i] + r2 + 1, 0);
}
int ans = 0;
for(int i = l1; i <= r1; i++){
for(int j = l2; j <= r2; j++){
if(!used[i][j] && !u[i][j]) dfs(i, j, l1, r1, l2, r2), ans++;
}
}
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |