제출 #678167

#제출 시각아이디문제언어결과실행 시간메모리
678167Cross_Ratio무지개나라 (APIO17_rainbow)C++14
11 / 100
15 ms852 KiB
#include "rainbow.h"
#include <bits/stdc++.h>
using namespace std;
bool on[55][55];
int R, C;
void init(int _R, int _C, int sr, int sc, int M, char *S) {
    int i, j;
    R = _R, C = _C;
    for(i=1;i<=R;i++) {
        for(j=1;j<=C;j++) on[i][j] = true;
    }
    on[sr][sc] = false;
    for(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++;
        on[sr][sc] = false;
    }
}
int dx[4] = {0, 0, 1, -1};
int dy[4] = {1, -1, 0, 0};
bool in(int x, int y) {
    return 1<=x&&x<=R&&1<=y&&y<=C;
}
bool vis[55][55];
int dfs(int x, int y) {
    vis[x][y] = true;
    for(int k = 0; k < 4; k++) {
        int x2 = x + dx[k], y2 = y + dy[k];
        if(in(x2, y2) && !vis[x2][y2] && on[x2][y2]) {
            dfs(x2, y2);
        }
    }
    return 1;
}
int colour(int ar, int ac, int br, int bc) {
    int i, j;
    for(i=1;i<=R;i++) {
        for(j=1;j<=C;j++) {
            if(i<ar||i>br||j<ac||j>bc) vis[i][j] = true;
            else vis[i][j]= false;
        }
    }
    int sum = 0;
    for(i=ar;i<=br;i++) {
        for(j=ac;j<=bc;j++) {
            if(on[i][j]&&!vis[i][j]) {
                sum += dfs(i, j);
            }
        }
    }
    return sum;
}

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