Submission #1170727

#TimeUsernameProblemLanguageResultExecution timeMemory
1170727MuhammetLand of the Rainbow Gold (APIO17_rainbow)C++20
0 / 100
0 ms580 KiB
#include "bits/stdc++.h"
#include "rainbow.h"
// #include "grader.cpp"

using namespace std;

const int N = 1e2 + 5;

int a[N][N], vis[N][N], n, m, n1, n2, m1, m2;

bool check(int i, int j) {
    return (!vis[i][j] and !a[i][j] and i <= n1 and i >= n2 and j <= m1 and j >= m2);
}

void dfs(int i, int j) {
    vis[i][j] = true;
    if(check(i+1, j)) dfs(i+1, j);
    if(check(i-1, j)) dfs(i-1, j);
    if(check(i, j+1)) dfs(i, j+1);
    if(check(i, j-1)) dfs(i, j-1);
}

void init(int r, int c, int sr, int sc, int M, char *s) {
    a[sr][sc] = true;
    n = r, m = c;
    for(int i = 0; i < M; i++) {
        if(s[i] == 'N') sr--;
        if(s[i] == 'S') sr++;
        if(s[i] == 'W') sc--;
        if(s[i] == 'E') sc++;
        assert(!a[sr][sc]);
        a[sr][sc] = true;
    }
}

int colour(int ar, int ac, int br, int bc) {
    memset(vis, 0, sizeof vis);
    int ans = 0;
    n1 = br, m1 = bc, n2 = ar, m2 = ac;
    for(int i = ar; i <= br; i++) {
        for(int j = ac; j <= bc; j++) {
            if(vis[i][j] or a[i][j]) continue;
            ans++;
            dfs(i, j);
        }
    }
    return ans;
}

#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...