# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
72027 | Semteo For Ajou (#118) | Aquatic Labyrinth (FXCUP3_aqua) | C++14 | 3 ms | 460 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <stdio.h>
#include <algorithm>
using namespace std;
int map[901][901];
int x[5] = { 0,-1,0,1,0 }, y[5] = { 0,0,1,0,-1 };
int tx, ty, f, s, px[10000001], py[10000001];
char arr[10001];
int main()
{
int n,i,j,k,ex,ey;
scanf("%d", &n);
f = 1;
s = 1;
for (i = 1; i <= n; i++)
{
scanf("%s", arr);
for (j = 0; j < n; j++)
{
if (arr[j] == 'M')
{
map[i][j + 1] = 0;
px[f] = i;
py[f] = j + 1;
}
else if (arr[j] == 'W')
map[i][j + 1] = -1;
else if (arr[j] == '.')
map[i][j + 1] = 0;
else if (arr[j] == 'H')
{
map[i][j + 1] = 0;
ex = i;
ey = j+1;
}
}
}
map[px[f]][py[f]] = 1;
int flag,a=0;
while (f <= s)
{
for (i = 1; i <= 4; i++)
{
flag = 0;
a = 0;
tx = px[f];
ty = py[f];
while (flag != 2)
{
tx += x[i];
ty += y[i];
if (tx<0 || ty<0 || tx>n || ty>n)
break;
if (map[tx][ty] == -1)
{
flag = 1;
a++;
}
if (map[tx][ty] != -1 && flag == 1)
{
flag = 2;
break;
}
}
if (flag == 2)
{
if (map[tx][ty] == 0 || map[tx][ty] > a*a + map[px[f]][py[f]])
{
map[tx][ty] = a * a + map[px[f]][py[f]];
s++;
px[s] = tx;
py[s] = ty;
}
}
}
f++;
}
printf("%d", map[ex][ey]-1);
return 0;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |