Submission #1144768

#TimeUsernameProblemLanguageResultExecution timeMemory
1144768fabijan_cikacMaze (JOI23_ho_t3)C++20
0 / 100
1 ms584 KiB
#include <bits/stdc++.h> using namespace std; #define pb push_back #define pp pair<int, int> #define F first #define S second const int N = 1010; const int INF = 1e9; int n, m, k; int X1, Y1, X2, Y2; char a[N][N]; int dist[N][N]; int dx[4] = {-1, 1, 0, 0}; int dy[4] = {0, 0, -1, 1}; bool bio[N][N]; queue<pp> q; bool inb(int x, int y){ return (x >= 0 && x < n && y >= 0 && y < m); } void fill(int l1, int l2, int r1, int r2, int x){ for (int i = l1; i <= l2; ++i) for (int j = r1; j <= r2; ++j){ if (!inb(i, j)) continue; dist[i][j] = min(dist[i][j], x); if (!bio[i][j]) q.push({i, j}), bio[i][j] = 1; } } int main(){ cin >> n >> m >> k; cin >> X1 >> Y1 >> X2 >> Y2; --X1, --Y1, --X2, --Y2; for (int i = 0; i < n; ++i) for (int j = 0; j < m; ++j) cin >> a[i][j]; for (int i = 0; i < n; ++i) for (int j = 0; j < m; ++j) dist[i][j] = INF; dist[X1][Y1] = 0; vector<pair<int, pp> > v; for (int i = 0; i < n; ++i) for (int j = 0; j < m; ++j) v.pb({abs(i - X1) + abs(j - Y1), {i, j}}); sort(v.begin(), v.end()); q.push({X1, Y1}); bio[X1][Y1] = 1; while (!q.empty()){ int x = q.front().F, y = q.front().S; q.pop(); for (int i = 0; i < 4; ++i){ if (inb(x + dx[i], y + dy[i]) && a[x + dx[i]][y + dy[i]] == '.'){ dist[x + dx[i]][y + dy[i]] = min(dist[x + dx[i]][y + dy[i]], dist[x][y]); if (!bio[x + dx[i]][y + dy[i]]) q.push({x + dx[i], y + dy[i]}), bio[x + dx[i]][y + dy[i]] = 1; } } fill(x - k + 1, x + k - 1, y - k, y + k, dist[x][y] + 1); fill(x - k, x + k, y - k + 1, y + k - 1, dist[x][y] + 1); } cout << dist[X2][Y2]; return 0; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...