Submission #111805

# Submission time Handle Problem Language Result Execution time Memory
111805 2019-05-16T08:20:50 Z anayk Tracks in the Snow (BOI13_tracks) C++14
100 / 100
1271 ms 176188 KB
#include <iostream>
#include <vector>
#include <deque>

#define MAXN 4005
#define MAXV 17000000

int n, m;
std::deque<std::pair<int, int> > bfs;
bool vis[MAXN][MAXN];
int d[MAXN][MAXN];
//std::vector<std::pair<int, bool> > Adj[MAXV];
int mat[MAXN][MAXN];

int main()
{
	std::ios::sync_with_stdio(false);
	std::cin >> n >> m;
	
	for(int i = 0; i < n; i++)
	{
		for(int j = 0; j < m; j++)
		{
			char c;
			std::cin >> c;
			if(c == 'R')
				mat[i][j] = 1;
			else if(c == 'F')
				mat[i][j] = 2;
			else
				mat[i][j] = 0;
		}
	}
	
	bfs.push_front({0, 0});
	d[0][0] = 0;
	vis[0][0] = true;
	
	int dx[] = {1, 0, -1, 0};
	int dy[] = {0, 1, 0, -1};
	
	int answer = 0;
	while(!bfs.empty())
	{
		std::pair<int, int> u = bfs.front();
		bfs.pop_front();
		int i = u.first;
		int j = u.second;

		for(int k = 0; k < 4; k++)
		{
			int p = i + dx[k];
			int q = j + dy[k];
			
			if(p < 0 || p >= n || q < 0 || q >= m)
				continue;
			
			if(!vis[p][q] && mat[p][q])
			{
				vis[p][q] = true;
				bool type = (mat[p][q] != mat[i][j]);
				d[p][q] = d[i][j];
				if(type)
				{
					d[p][q]++;
					bfs.push_back({p, q});
				}
				else
					bfs.push_front({p, q});
				answer = std::max(answer, d[p][q]);
			}
		}
	}
	
	std::cout << answer+1 << std::endl;
	
	return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 30 ms 8184 KB Output is correct
2 Correct 2 ms 504 KB Output is correct
3 Correct 3 ms 896 KB Output is correct
4 Correct 17 ms 7680 KB Output is correct
5 Correct 8 ms 4480 KB Output is correct
6 Correct 3 ms 512 KB Output is correct
7 Correct 3 ms 896 KB Output is correct
8 Correct 3 ms 1152 KB Output is correct
9 Correct 3 ms 1536 KB Output is correct
10 Correct 10 ms 3712 KB Output is correct
11 Correct 9 ms 3072 KB Output is correct
12 Correct 11 ms 4580 KB Output is correct
13 Correct 11 ms 4480 KB Output is correct
14 Correct 11 ms 4448 KB Output is correct
15 Correct 28 ms 8184 KB Output is correct
16 Correct 24 ms 8192 KB Output is correct
17 Correct 20 ms 7928 KB Output is correct
18 Correct 19 ms 7680 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 49 ms 46428 KB Output is correct
2 Correct 116 ms 25076 KB Output is correct
3 Correct 659 ms 120588 KB Output is correct
4 Correct 180 ms 51604 KB Output is correct
5 Correct 334 ms 91912 KB Output is correct
6 Correct 1231 ms 155524 KB Output is correct
7 Correct 42 ms 48504 KB Output is correct
8 Correct 39 ms 46328 KB Output is correct
9 Correct 5 ms 896 KB Output is correct
10 Correct 4 ms 512 KB Output is correct
11 Correct 49 ms 47736 KB Output is correct
12 Correct 5 ms 2304 KB Output is correct
13 Correct 100 ms 25080 KB Output is correct
14 Correct 59 ms 17144 KB Output is correct
15 Correct 60 ms 20348 KB Output is correct
16 Correct 44 ms 9592 KB Output is correct
17 Correct 243 ms 49272 KB Output is correct
18 Correct 194 ms 55800 KB Output is correct
19 Correct 189 ms 51788 KB Output is correct
20 Correct 151 ms 43000 KB Output is correct
21 Correct 363 ms 92408 KB Output is correct
22 Correct 318 ms 92024 KB Output is correct
23 Correct 481 ms 75512 KB Output is correct
24 Correct 380 ms 89468 KB Output is correct
25 Correct 866 ms 141816 KB Output is correct
26 Correct 615 ms 174316 KB Output is correct
27 Correct 954 ms 176188 KB Output is correct
28 Correct 1271 ms 155632 KB Output is correct
29 Correct 1244 ms 153304 KB Output is correct
30 Correct 1174 ms 157936 KB Output is correct
31 Correct 940 ms 113784 KB Output is correct
32 Correct 909 ms 162700 KB Output is correct