Submission #1153629

#TimeUsernameProblemLanguageResultExecution timeMemory
1153629MPGTracks in the Snow (BOI13_tracks)C++20
100 / 100
834 ms67104 KiB
// #pragma GCC optimization ("unroll-loops") // #pragma GCC optimization ("O1, O2, O3, Ofast") // #pragma GCC optimization ("trapv") // #pragma GCC optimization ("sse, sse2, sse3, sse4, sse4.1, sse4.2, avx") #include <bits/stdc++.h> using namespace std; typedef long long ll; #define max_heap priority_queue<ll> #define min_heap priority_queue<pair <ll, ll>, vector<pair <ll, ll>>, greater<pair <ll, ll>>> // size(), push(), top(), pop(); //#define min_heap priority_queue<ll, vector<ll>, greater<ll>> #define sariE cin.tie(NULL); cout.tie(NULL); ios_base::sync_with_stdio(false); #define filE freopen("in.txt", "r", stdin); freopen("out1.txt", "w", stdout); #define endl '\n' #define md(a) (a % mod + mod) % mod //cout << setprecision(5) << f; ll const maxn = 2e5 + 10; ll const inf = 2e18; ll const loG = 23; ll const mod = 1e6 + 3;//998244353; //1e9 + 9, // 1e9 + 7; ll const sq = 750; ll power(ll a, ll b, ll mod){if (b == 0) return 1; if (b == 1) return a; ll x = power(a, b / 2, mod); return (((x * x) % mod) * (b % 2 ? a : 1)) % mod;} ll n, m, ans; string mp[4010]; bool mark[4010][4010]; ll dx[4] = {0, 0, -1, 1}, dy[4] = {1, -1, 0, 0}; void bfs(){ queue <pair <ll, ll>> qu[2]; ll anim = 0; qu[0].push({1, 1}); qu[0].push({n, m}); while (!qu[anim].empty()){ while (!qu[anim].empty()){ ll x = qu[anim].front().first, y = qu[anim].front().second; qu[anim].pop(); if (mark[x][y]) continue; mark[x][y] = 1; for (int i = 0; i < 4; i++){ ll xx = x + dx[i], yy = y + dy[i]; if (xx > 0 && xx <= n && yy > 0 && yy <= m && !mark[xx][yy]){ if (mp[x][y] == mp[xx][yy]){ qu[anim].push({xx, yy}); } else{ qu[1 - anim].push({xx, yy}); } } } } anim = 1 - anim; ans++; } } int main(){ sariE;// filE; cin >> n >> m; for (int i = 1; i < n + 1; i++){ cin >> mp[i]; mp[i] = ' ' + mp[i]; for (int j = 1; j < mp[i].size(); j++){ if (mp[i][j] == '.') mark[i][j] = 1; } } bfs(); cout << ans << endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...