Submission #1146067

#TimeUsernameProblemLanguageResultExecution timeMemory
1146067moaipoTracks in the Snow (BOI13_tracks)C++20
0 / 100
2133 ms935100 KiB
#include <bits/stdc++.h> using namespace std; int n, m; vector<vector<int>> v; vector<pair<int,int>> mv = {{0,1},{0,-1},{1,0},{-1,0}}; int main(){ std::ios_base::sync_with_stdio(false); std::cin.tie(nullptr); cin>>n>>m; v = vector<vector<int>> (n, vector<int>(m)); auto odw = vector<vector<bool>> (n, vector<bool>(m)); char c; for(int i=0;i<n;i++){ for (int j = 0; j < m; ++j) { cin>>c; if(c=='R') v[i][j] = 1; else if(c=='F') v[i][j] = -1; } } vector<vector<int>> nq; vector<vector<int>> q = {{0,0}}; // x, y int maxi = 0; while(!q.empty()) { int ssiz = q.size(); for(int i=0;i<ssiz;i++) { auto cur = q[i]; int x = cur[0], y = cur[1], r = v[y][x]; if(r==0) continue; for(auto &cm : mv) { int nx = x + cm.first, ny = y + cm.second; if(nx<0 || ny<0 || nx>=m || ny>=n) continue; if(odw[ny][nx]) continue; int nr = v[ny][nx]; if(nr == -1 * r) { nq.push_back({nx, ny}); } else if(nr == r) { q.push_back({nx, ny}); ssiz++; } odw[ny][nx] = true; } } maxi++; q.insert(q.begin(), std::make_move_iterator(nq.begin()), std::make_move_iterator(nq.end())); nq.clear(); } cout<<maxi<<'\n'; } /* 5 8 FFR..... .FRRR... .FFFFF.. ..RRRFFR .....FFF */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...