Submission #258105

#TimeUsernameProblemLanguageResultExecution timeMemory
258105mohammadLand of the Rainbow Gold (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...