#include <bits/stdc++.h>
using namespace std;
#define pb push_back
struct tpos
{
int i, j, t;
};
bool operator < (const tpos &a, const tpos &b)
{
if (a.i == b.i) return a.j < b.j;
return a.i < b.i;
}
char mat[801][801];
int tiempo[801][801];
//int tiempo_oso[801][801];
int iini, jini, ifin, jfin;
int n, s;
vector<tpos> abejas;
bool verifica (int i, int j)
{
if (i < 0 || j < 0 || i >= n || j >= n)
return 0;
return 1;
}
int di[4] = {0, 1, 0, -1}, dj[4] = {1, 0, -1, 0};
void expande_abejas(queue<tpos> &abeja)
{
tpos t;
int ti, tj;
while (!abeja.empty())
{
t = abeja.front(); abeja.pop();
tiempo[t.i][t.j] = t.t;
for (int k = 0; k < 4; k++)
{
ti = t.i + di[k], tj = t.j + dj[k];
if (!verifica(ti, tj)) continue;
if (tiempo[ti][tj] != -1) continue;
if (mat[ti][tj] == 'T') continue;
abeja.push({ti, tj, t.t + 1});
}
}
}
bool sepuede(int t)
{
vector<vector<bool>>visi(n, vector<bool>(n, 0)); //llegue?
queue<tpos> mecho;
mecho.push({iini, jini, t+1});
tpos temp;
int ti, tj;
// cout << t << '\n';
int turno = 0;
visi[iini][jini] = 1;
while (!mecho.empty())
{
temp = mecho.front(); mecho.pop();
//cout << temp.i << " " << temp.j << " " <<temp.t << '\n';
/* if (t + (temp.t - t)/(s+1) > tiempo[temp.i][temp.j]) continue;
tiempo_oso[temp.i][temp.j] = temp.t;*/
int realt = (temp.t - t)/s;
if (mat[temp.i][temp.j] == 'D') return 1;
for (int k = 0; k < 4; k++)
{
ti = temp.i + di[k];
tj = temp.j + dj[k];
if (!verifica(ti, tj)) continue;
if (visi[ti][tj]) continue;
if (mat[ti][tj] == 'T') continue;
if (tiempo[ti][tj] < (t + (temp.t - t + 1)/(s))) continue;
mecho.push({ti, tj, temp.t + 1});
visi[ti][tj] = 1;
}
}
return 0;
}
int main ()
{
cin >> n >> s;
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
{
tiempo[i][j] = -1;
cin >> mat[i][j];
if (mat[i][j] == 'M')
{
iini = i;
jini = j;
continue;
}
if (mat[i][j] == 'H')
{
abejas.pb({i, j, 0});
tiempo[i][j] = 0;
}
if (mat[i][j] == 'D')
{
ifin = i;
jfin = j;
}
}
queue<tpos> a;
for (int i = 0, l = abejas.size(); i < l; i++)
a.push(abejas[i]);
int l = 0, r = (1<<11), resp = -1;
expande_abejas(a);
while (l <= r)
{
int mit = (l+r)>>1;
if (sepuede(mit))
{
resp = mit;
l = mit+1;
continue;
}
r = mit-1;
}
cout << resp-1;
/* for (int i = 0; i < n; i++, cout << '\n')
for (int j = 0; j < n; j++)
cout << tiempo[i][j] << " ";
cout << '\n';
sepuede(2);
for (int i = 0; i < n; i++, cout << '\n')
for (int j = 0; j < n; j++)
cout << tiempo_oso[i][j] << " ";
//cout << resp;
//sepuede(1);
*/
return 0;
}
Compilation message
mecho.cpp: In function 'bool sepuede(int)':
mecho.cpp:62:13: warning: unused variable 'realt' [-Wunused-variable]
62 | int realt = (temp.t - t)/s;
| ^~~~~
mecho.cpp:54:9: warning: unused variable 'turno' [-Wunused-variable]
54 | int turno = 0;
| ^~~~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
0 ms |
348 KB |
Output isn't correct |
2 |
Incorrect |
0 ms |
348 KB |
Output isn't correct |
3 |
Correct |
0 ms |
348 KB |
Output is correct |
4 |
Incorrect |
1 ms |
348 KB |
Output isn't correct |
5 |
Correct |
0 ms |
344 KB |
Output is correct |
6 |
Incorrect |
0 ms |
348 KB |
Output isn't correct |
7 |
Runtime error |
162 ms |
65536 KB |
Execution killed with signal 9 |
8 |
Incorrect |
1 ms |
348 KB |
Output isn't correct |
9 |
Incorrect |
0 ms |
348 KB |
Output isn't correct |
10 |
Incorrect |
1 ms |
348 KB |
Output isn't correct |
11 |
Correct |
0 ms |
348 KB |
Output is correct |
12 |
Incorrect |
1 ms |
2652 KB |
Output isn't correct |
13 |
Incorrect |
9 ms |
1320 KB |
Output isn't correct |
14 |
Incorrect |
120 ms |
17244 KB |
Output isn't correct |
15 |
Incorrect |
0 ms |
344 KB |
Output isn't correct |
16 |
Correct |
0 ms |
440 KB |
Output is correct |
17 |
Incorrect |
0 ms |
348 KB |
Output isn't correct |
18 |
Correct |
1 ms |
348 KB |
Output is correct |
19 |
Incorrect |
0 ms |
348 KB |
Output isn't correct |
20 |
Correct |
1 ms |
348 KB |
Output is correct |
21 |
Incorrect |
0 ms |
604 KB |
Output isn't correct |
22 |
Correct |
1 ms |
856 KB |
Output is correct |
23 |
Incorrect |
1 ms |
604 KB |
Output isn't correct |
24 |
Correct |
1 ms |
604 KB |
Output is correct |
25 |
Incorrect |
1 ms |
2648 KB |
Output isn't correct |
26 |
Correct |
2 ms |
2804 KB |
Output is correct |
27 |
Incorrect |
1 ms |
2652 KB |
Output isn't correct |
28 |
Correct |
1 ms |
2492 KB |
Output is correct |
29 |
Incorrect |
1 ms |
2652 KB |
Output isn't correct |
30 |
Correct |
1 ms |
2648 KB |
Output is correct |
31 |
Incorrect |
1 ms |
2648 KB |
Output isn't correct |
32 |
Correct |
1 ms |
2720 KB |
Output is correct |
33 |
Incorrect |
6 ms |
2908 KB |
Output isn't correct |
34 |
Incorrect |
6 ms |
2908 KB |
Output isn't correct |
35 |
Runtime error |
104 ms |
65536 KB |
Execution killed with signal 9 |
36 |
Incorrect |
9 ms |
3164 KB |
Output isn't correct |
37 |
Incorrect |
7 ms |
3164 KB |
Output isn't correct |
38 |
Runtime error |
130 ms |
65536 KB |
Execution killed with signal 9 |
39 |
Incorrect |
9 ms |
3164 KB |
Output isn't correct |
40 |
Incorrect |
9 ms |
3076 KB |
Output isn't correct |
41 |
Runtime error |
104 ms |
65536 KB |
Execution killed with signal 9 |
42 |
Incorrect |
11 ms |
3164 KB |
Output isn't correct |
43 |
Incorrect |
11 ms |
3260 KB |
Output isn't correct |
44 |
Runtime error |
109 ms |
65536 KB |
Execution killed with signal 9 |
45 |
Incorrect |
13 ms |
3420 KB |
Output isn't correct |
46 |
Incorrect |
13 ms |
3392 KB |
Output isn't correct |
47 |
Runtime error |
142 ms |
65536 KB |
Execution killed with signal 9 |
48 |
Incorrect |
16 ms |
3484 KB |
Output isn't correct |
49 |
Incorrect |
15 ms |
3420 KB |
Output isn't correct |
50 |
Runtime error |
135 ms |
65536 KB |
Execution killed with signal 9 |
51 |
Incorrect |
17 ms |
3556 KB |
Output isn't correct |
52 |
Incorrect |
17 ms |
3676 KB |
Output isn't correct |
53 |
Runtime error |
141 ms |
65536 KB |
Execution killed with signal 9 |
54 |
Incorrect |
21 ms |
3672 KB |
Output isn't correct |
55 |
Incorrect |
21 ms |
3688 KB |
Output isn't correct |
56 |
Runtime error |
141 ms |
65536 KB |
Execution killed with signal 9 |
57 |
Incorrect |
25 ms |
3920 KB |
Output isn't correct |
58 |
Incorrect |
23 ms |
3928 KB |
Output isn't correct |
59 |
Runtime error |
140 ms |
65536 KB |
Execution killed with signal 9 |
60 |
Incorrect |
33 ms |
4188 KB |
Output isn't correct |
61 |
Incorrect |
26 ms |
4176 KB |
Output isn't correct |
62 |
Runtime error |
146 ms |
65536 KB |
Execution killed with signal 9 |
63 |
Incorrect |
98 ms |
4188 KB |
Output isn't correct |
64 |
Incorrect |
144 ms |
4180 KB |
Output isn't correct |
65 |
Correct |
144 ms |
4208 KB |
Output is correct |
66 |
Correct |
111 ms |
4304 KB |
Output is correct |
67 |
Incorrect |
102 ms |
4308 KB |
Output isn't correct |
68 |
Correct |
49 ms |
4284 KB |
Output is correct |
69 |
Incorrect |
49 ms |
4180 KB |
Output isn't correct |
70 |
Correct |
45 ms |
4184 KB |
Output is correct |
71 |
Correct |
42 ms |
4184 KB |
Output is correct |
72 |
Incorrect |
40 ms |
4176 KB |
Output isn't correct |
73 |
Runtime error |
192 ms |
65536 KB |
Execution killed with signal 9 |
74 |
Runtime error |
239 ms |
65536 KB |
Execution killed with signal 9 |
75 |
Runtime error |
196 ms |
65536 KB |
Execution killed with signal 9 |
76 |
Runtime error |
219 ms |
65536 KB |
Execution killed with signal 9 |
77 |
Runtime error |
224 ms |
65536 KB |
Execution killed with signal 9 |
78 |
Runtime error |
198 ms |
65536 KB |
Execution killed with signal 9 |
79 |
Runtime error |
171 ms |
65536 KB |
Execution killed with signal 9 |
80 |
Runtime error |
194 ms |
65536 KB |
Execution killed with signal 9 |
81 |
Runtime error |
205 ms |
65536 KB |
Execution killed with signal 9 |
82 |
Runtime error |
195 ms |
65536 KB |
Execution killed with signal 9 |
83 |
Runtime error |
168 ms |
65536 KB |
Execution killed with signal 9 |
84 |
Runtime error |
180 ms |
65536 KB |
Execution killed with signal 9 |
85 |
Runtime error |
159 ms |
65536 KB |
Execution killed with signal 9 |
86 |
Runtime error |
156 ms |
65536 KB |
Execution killed with signal 9 |
87 |
Runtime error |
154 ms |
65536 KB |
Execution killed with signal 9 |
88 |
Runtime error |
161 ms |
65536 KB |
Execution killed with signal 9 |
89 |
Runtime error |
139 ms |
65536 KB |
Execution killed with signal 9 |
90 |
Runtime error |
143 ms |
65536 KB |
Execution killed with signal 9 |
91 |
Runtime error |
151 ms |
65536 KB |
Execution killed with signal 9 |
92 |
Runtime error |
169 ms |
65536 KB |
Execution killed with signal 9 |