제출 #258105

#제출 시각아이디문제언어결과실행 시간메모리
258105mohammad무지개나라 (APIO17_rainbow)C++14
11 / 100
3111 ms452868 KiB
#include "rainbow.h" #include<bits/stdc++.h> using namespace std; #define endl "\n" #define OR | typedef long long ll ; const ll ooo = 1e14 ; const ll oo = 2e9 ; const double PI = acos(-1) ; const ll M = 1e9 + 7 ; const int N = 10000010 ; int r[4] = {1 , -1 , 0 , 0} , c[4] = {0 , 0 , 1 , -1} ; map<char,int> mp; map<int,bool> vis[200010]; int ln , lm , rn , rm; string g[200010]; set<pair<int,int>> s; void init(int R, int C, int sr, int sc, int M, char *S) { mp['N'] = 1; mp['S'] = 0; mp['E'] = 2; mp['W'] = 3; for(int i = 1 ; i <= R ; ++i) for(int j = 0 ; j <= C ; ++j) g[i] += '.'; g[sr][sc] = '#'; for(int i = 0 ; i < M ; ++i){ sr += r[mp[S[i]]]; sc += c[mp[S[i]]]; g[sr][sc] = '#'; } } void dfs(int i , int j){ if(i == ln - 1 or j == lm - 1 or i == rn + 1 or j == rm + 1) return; if(g[i][j] == '#' or vis[i][j])return; s.erase({i,j}); vis[i][j] = 1; for(int k = 0 ; k < 4; ++k){ int nx = i + r[k] , ny = j + c[k]; dfs(nx , ny); } } // g++ -Wall -lm -static -DEVAL -o rainbow -O2 rainbow.cpp grader.cpp -std=c++14 int colour(int ar, int ac, int br, int bc) { int ans = 0 ; s.clear(); ln = ar; lm = ac; rn = br; rm = bc; for(int i = ar ; i <= br ; ++i){ vis[i].clear(); for(int j = ac ; j <= bc ; ++j) if(g[i][j] != '#') s.insert({i , j}); } while(!s.empty()){ int x = s.begin()->first , y = s.begin()->second; // cout << x << ' ' << y << ' ' << ":" << endl; dfs(x , y); // cout << endl; ans++; } 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...