#include "rainbow.h"
#include <bits/stdc++.h>
using namespace std;
const int N = 1002;
const int maxN = (int) 2e5 + 9;
int sub = 1;
int a[N][N], vis[N][N], done[N][N], u, l, d, r, sum1[maxN], sum2[maxN], sum12[maxN], vis2[2][maxN];
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);
}
}
}
int isNew(int i) {
return (vis[0][i] + vis[1][i] < 2) && (vis[0][i - 1] + vis[1][i - 1] == 2);
}
void init(int R, int C, int sr, int sc, int M, char *S) {
if (R == 2) {
sub = 2;
}
u = 1; d = R;
l = 1; r = C;
if (sub == 2) {
vis2[sr][sc] = 1;
} else {
vis[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] == 'E') {
sc++;
} else {
sc--;
}
if (sub == 2) {
vis2[sr][sc] = 1;
} else {
vis[sr][sc] = 1;
}
}
if (sub == 2) {
vis2[0][0] = vis2[1][0] = 1;
for (int i = 1; i <= C; i++) {
sum1[i] = sum1[i - 1] + (!vis2[0][i] && vis2[0][i - 1]);
sum2[i] = sum2[i - 1] + (!vis2[1][i] && vis2[1][i - 1]);
sum12[i] = sum12[i - 1] + isNew(i);
}
}
}
int colour(int ar, int ac, int br, int bc) {
u = ar; d = br;
l = ac; r = bc;
int ans = 0;
if (sub == 2) {
if (u == d) {
if (d == 1) {
return sum1[r] - sum1[l - 1] + (!vis2[0][l] && !vis[0][l - 1]);
} else {
return sum2[r] - sum2[l - 1] + (!vis2[1][l] && !vis[1][l - 1]);
}
} else {
return (sum12[r] - sum12[l - 1]) + ((vis2[0][l] + vis2[1][l] < 2) && !isNew(l));
}
}
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;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
142 ms |
4308 KB |
Output is correct |
2 |
Correct |
147 ms |
4452 KB |
Output is correct |
3 |
Correct |
163 ms |
4556 KB |
Output is correct |
4 |
Correct |
163 ms |
4532 KB |
Output is correct |
5 |
Correct |
151 ms |
4428 KB |
Output is correct |
6 |
Correct |
3 ms |
4172 KB |
Output is correct |
7 |
Correct |
3 ms |
4172 KB |
Output is correct |
8 |
Correct |
3 ms |
4172 KB |
Output is correct |
9 |
Correct |
3 ms |
4172 KB |
Output is correct |
10 |
Correct |
3 ms |
4172 KB |
Output is correct |
11 |
Correct |
153 ms |
4428 KB |
Output is correct |
12 |
Correct |
152 ms |
4428 KB |
Output is correct |
13 |
Correct |
149 ms |
4428 KB |
Output is correct |
14 |
Correct |
147 ms |
4436 KB |
Output is correct |
15 |
Correct |
2 ms |
4172 KB |
Output is correct |
16 |
Incorrect |
1 ms |
332 KB |
Output isn't correct |
17 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
1 ms |
332 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
4172 KB |
Output is correct |
2 |
Runtime error |
2 ms |
588 KB |
Execution killed with signal 11 |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
142 ms |
4308 KB |
Output is correct |
2 |
Correct |
147 ms |
4452 KB |
Output is correct |
3 |
Correct |
163 ms |
4556 KB |
Output is correct |
4 |
Correct |
163 ms |
4532 KB |
Output is correct |
5 |
Correct |
151 ms |
4428 KB |
Output is correct |
6 |
Correct |
3 ms |
4172 KB |
Output is correct |
7 |
Correct |
3 ms |
4172 KB |
Output is correct |
8 |
Correct |
3 ms |
4172 KB |
Output is correct |
9 |
Correct |
3 ms |
4172 KB |
Output is correct |
10 |
Correct |
3 ms |
4172 KB |
Output is correct |
11 |
Correct |
153 ms |
4428 KB |
Output is correct |
12 |
Correct |
152 ms |
4428 KB |
Output is correct |
13 |
Correct |
149 ms |
4428 KB |
Output is correct |
14 |
Correct |
147 ms |
4436 KB |
Output is correct |
15 |
Correct |
2 ms |
4172 KB |
Output is correct |
16 |
Incorrect |
1 ms |
332 KB |
Output isn't correct |
17 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
142 ms |
4308 KB |
Output is correct |
2 |
Correct |
147 ms |
4452 KB |
Output is correct |
3 |
Correct |
163 ms |
4556 KB |
Output is correct |
4 |
Correct |
163 ms |
4532 KB |
Output is correct |
5 |
Correct |
151 ms |
4428 KB |
Output is correct |
6 |
Correct |
3 ms |
4172 KB |
Output is correct |
7 |
Correct |
3 ms |
4172 KB |
Output is correct |
8 |
Correct |
3 ms |
4172 KB |
Output is correct |
9 |
Correct |
3 ms |
4172 KB |
Output is correct |
10 |
Correct |
3 ms |
4172 KB |
Output is correct |
11 |
Correct |
153 ms |
4428 KB |
Output is correct |
12 |
Correct |
152 ms |
4428 KB |
Output is correct |
13 |
Correct |
149 ms |
4428 KB |
Output is correct |
14 |
Correct |
147 ms |
4436 KB |
Output is correct |
15 |
Correct |
2 ms |
4172 KB |
Output is correct |
16 |
Incorrect |
1 ms |
332 KB |
Output isn't correct |
17 |
Halted |
0 ms |
0 KB |
- |