답안 #1062297

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1062297 2024-08-17T02:38:42 Z danielzhu Tracks in the Snow (BOI13_tracks) C++17
86.875 / 100
2000 ms 89288 KB
#include <bits/stdc++.h>
using namespace std;
int H, W;
char grid[4001][4001];
vector<pair<int,int>> dir = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};

void bfs(set<pair<int,int>> &from, set<pair<int,int>> &to, char cc){
	while(!from.empty()){
			auto temp = from.begin();
			from.erase(from.begin());
			grid[temp->first][temp->second] = '.';
			//from.erase(from.find(temp));
			int x = temp->first, y = temp->second;
			for(auto [dx, dy] : dir){
				if(x+dx > -1 && x+dx < H && y+dy > -1 && y+dy < W && grid[x+dx][y+dy] != '.'){
					if(grid[x+dx][y+dy] != cc) to.insert({x+dx, y+dy});
					else from.insert({x+dx, y+dy});
				}
			}
	}
}

int main(){
	cin>>H>>W;
	for(int i = 0; i < H; i++){
		string s; cin>>s;
		for(int j = 0; j < W; j++){
			grid[i][j] = s[j];
		}
	}
	int x = 0, y = 0, ans = 0;
	char cc = grid[0][0];
	set<pair<int,int>> F, R;
	if(cc == 'F') F.insert({0,0});
	else R.insert({0,0});
	while(true){
		if(cc == 'F' && F.empty()) break;
		if(cc == 'R' && R.empty()) break;
		if(cc == 'F')
			bfs(F, R, cc);
		else if(cc == 'R')
			bfs(R, F, cc);
		ans++;
		if(cc == 'F') cc = 'R';
		else if(cc == 'R') cc = 'F';
	}
	cout<<ans<<endl;
	return 0;
}
		
		
		
		
			
	
	

Compilation message

tracks.cpp: In function 'int main()':
tracks.cpp:31:6: warning: unused variable 'x' [-Wunused-variable]
   31 |  int x = 0, y = 0, ans = 0;
      |      ^
tracks.cpp:31:13: warning: unused variable 'y' [-Wunused-variable]
   31 |  int x = 0, y = 0, ans = 0;
      |             ^
# 결과 실행 시간 메모리 Grader output
1 Correct 48 ms 3164 KB Output is correct
2 Correct 1 ms 440 KB Output is correct
3 Correct 1 ms 2652 KB Output is correct
4 Correct 25 ms 3580 KB Output is correct
5 Correct 4 ms 2648 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 1 ms 2652 KB Output is correct
8 Correct 1 ms 2652 KB Output is correct
9 Correct 1 ms 2652 KB Output is correct
10 Correct 5 ms 2700 KB Output is correct
11 Correct 7 ms 2908 KB Output is correct
12 Correct 16 ms 2884 KB Output is correct
13 Correct 4 ms 2648 KB Output is correct
14 Correct 4 ms 2652 KB Output is correct
15 Correct 32 ms 3056 KB Output is correct
16 Correct 44 ms 3216 KB Output is correct
17 Correct 17 ms 2904 KB Output is correct
18 Correct 25 ms 3428 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 15192 KB Output is correct
2 Correct 110 ms 8372 KB Output is correct
3 Correct 469 ms 31580 KB Output is correct
4 Correct 117 ms 12368 KB Output is correct
5 Correct 260 ms 21508 KB Output is correct
6 Execution timed out 2108 ms 89288 KB Time limit exceeded
7 Correct 4 ms 15964 KB Output is correct
8 Correct 3 ms 15196 KB Output is correct
9 Correct 5 ms 680 KB Output is correct
10 Correct 1 ms 348 KB Output is correct
11 Correct 3 ms 15708 KB Output is correct
12 Correct 1 ms 2652 KB Output is correct
13 Correct 97 ms 8368 KB Output is correct
14 Correct 56 ms 5652 KB Output is correct
15 Correct 25 ms 5468 KB Output is correct
16 Correct 54 ms 3364 KB Output is correct
17 Correct 255 ms 12880 KB Output is correct
18 Correct 106 ms 12488 KB Output is correct
19 Correct 108 ms 12364 KB Output is correct
20 Correct 113 ms 11984 KB Output is correct
21 Correct 285 ms 22096 KB Output is correct
22 Correct 269 ms 21584 KB Output is correct
23 Correct 510 ms 18508 KB Output is correct
24 Correct 246 ms 21584 KB Output is correct
25 Correct 428 ms 31712 KB Output is correct
26 Correct 1337 ms 27084 KB Output is correct
27 Execution timed out 2012 ms 41008 KB Time limit exceeded
28 Execution timed out 2092 ms 89164 KB Time limit exceeded
29 Execution timed out 2055 ms 80468 KB Time limit exceeded
30 Execution timed out 2032 ms 74028 KB Time limit exceeded
31 Execution timed out 2045 ms 27500 KB Time limit exceeded
32 Correct 1881 ms 36152 KB Output is correct