Submission #689511

#TimeUsernameProblemLanguageResultExecution timeMemory
689511tcmmichaelb139Mecho (IOI09_mecho)C++17
0 / 100
1098 ms65536 KiB
#include "bits/stdc++.h" using namespace std; const int dx[] = {1, 0, -1, 0}, dy[] = {0, 1, 0, -1}; struct node { int x, y; int mx; int step; int dist; }; int main() { ios::sync_with_stdio(0); cin.tie(0); int n, s; cin >> n >> s; vector<vector<char>> ar(n, vector<char>(n)); pair<int, int> start, end; for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) { cin >> ar[i][j]; if (ar[i][j] == 'M') start = {i, j}; else if (ar[i][j] == 'D') end = {i, j}; } auto bee_dist_gen = [&]() { vector<vector<int>> dist(n, vector<int>(n, 1e9)); queue<pair<int, int>> q; for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) if (ar[i][j] == 'H') q.push({i, j}), dist[i][j] = 0; while (!q.empty()) { pair<int, int> v = q.front(); q.pop(); for (int i = 0; i < 4; i++) { int nx = v.first + dx[i], ny = v.second + dy[i]; if (nx < 0 || ny < 0 || nx >= n || ny >= n) continue; if (ar[nx][ny] == 'T') continue; if (dist[nx][ny] <= dist[v.first][v.second] + 1) continue; dist[nx][ny] = dist[v.first][v.second] + 1; q.push({nx, ny}); } } return dist; }; vector<vector<int>> bee_dist = bee_dist_gen(); vector<vector<int>> dist(n, vector<int>(n, 1e9)); queue<node> q; q.push({start.first, start.second, bee_dist[start.first][start.second], 0, 0}); dist[start.first][start.second] = true; int ans = 0; while (!q.empty()) { node v = q.front(); q.pop(); if (end.first == v.x && end.second == v.y) ans = max(ans, v.mx); if (v.step == 0) v.dist++; for (int i = 0; i < 4; i++) { int nx = v.x + dx[i], ny = v.y + dy[i]; if (nx < 0 || ny < 0 || nx >= n || ny >= n) continue; if (ar[nx][ny] == 'T') continue; if (bee_dist[nx][ny] < v.dist) continue; if (dist[nx][ny] < min(v.mx, bee_dist[nx][ny] - v.dist)) continue; dist[nx][ny] = min(v.mx, bee_dist[nx][ny] - v.dist); q.push({nx, ny, min(v.mx, bee_dist[nx][ny] - v.dist), (v.step + 1) % s, v.dist}); } } cout << ans << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...