제출 #1170862

#제출 시각아이디문제언어결과실행 시간메모리
1170862KasymKLand of the Rainbow Gold (APIO17_rainbow)C++20
11 / 100
2604 ms1452 KiB
#include "bits/stdc++.h" #include "rainbow.h" using namespace std; #define ff first #define ss second #define all(v) v.begin(), v.end() #define ll long long #define pb push_back #define pii pair<int, int> #define pli pair<ll, int> #define pll pair<ll, ll> #define tr(i, c) for(auto i = c.begin(); i != c.end(); ++i) #define wr puts("----------------") template<class T>bool umin(T& a,T b){if(a>b){a=b;return 1;}return 0;} template<class T>bool umax(T& a,T b){if(a<b){a=b;return 1;}return 0;} const int N = 55; bool v[N][N], vis[N][N]; int n, n1, m1, m, dx[]={1, -1, 0, 0}, dy[]={0, 0, 1, -1}; bool is(int x, int y){ return (x>=n and x<=n1 and y>=m and y<=m1 and !v[x][y] and !vis[x][y]); } void dfs(int x, int y){ v[x][y]=1; for(int ad = 0; ad < 4; ++ad) if(is(x+dx[ad], y+dy[ad])){ v[x+dx[ad]][y+dy[ad]]=1; dfs(x+dx[ad], y+dy[ad]); } } void init(int r, int c, int sr, int sc, int M, char *s){ vis[sr][sc]=1; // n=r, m=c; for(int i = 0; i < M; ++i){ if(s[i] == 'N') sr--; if(s[i] == 'E') sc++; if(s[i] == 'W') sc--; if(s[i] == 'S') sr++; vis[sr][sc]=1; } } int colour(int ar, int ac, int br, int bc){ n=ar, n1=br, m=ac, m1=bc; memset(v, 0, sizeof v); int ret=0; for(int i = ar; i <= br; ++i) for(int j = ac; j <= bc; ++j) if(!v[i][j] and !vis[i][j]){ ret++; dfs(i, j); } return ret; }
#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...