Submission #72244

#TimeUsernameProblemLanguageResultExecution timeMemory
72244Semteo For Ajou (#118)Aquatic Labyrinth (FXCUP3_aqua)C++14
100 / 100
815 ms22888 KiB
#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 (1)
			{
				tx += x[i];
				ty += y[i];
				if (tx<0 || ty<0 || tx>n || ty>n)
					break;
				if (map[tx][ty] == -1 && flag!=2)
				{
					flag = 1;
					a++;
				}
				if (map[tx][ty] != -1 && flag == 1)
				{
					flag = 2;
				}
				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;
					}
				}
				if (flag == 2 && map[tx][ty] == -1)
					break;
			}
		}
		f++;
	}
	/*for (i = 1; i <= n; i++)
	{
		for (j = 1; j <= n; j++)
		{
			printf("%d ", map[i][j]);
		}
		printf("\n");
	}*/
	if (map[ex][ey] == 0)
		printf("%d", -1);
	else
		printf("%d", map[ex][ey]-1);
	return 0;
}

Compilation message (stderr)

aqua.cpp: In function 'int main()':
aqua.cpp:10:12: warning: unused variable 'k' [-Wunused-variable]
  int n,i,j,k,ex,ey;
            ^
aqua.cpp:12:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d", &n);
  ~~~~~^~~~~~~~~~
aqua.cpp:18:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%s", arr);
   ~~~~~^~~~~~~~~~~
aqua.cpp:89:16: warning: 'ey' may be used uninitialized in this function [-Wmaybe-uninitialized]
  if (map[ex][ey] == 0)
      ~~~~~~~~~~^
aqua.cpp:89:16: warning: 'ex' may be used uninitialized in this function [-Wmaybe-uninitialized]
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...