답안 #1106358

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1106358 2024-10-30T04:45:23 Z lufychop Mecho (IOI09_mecho) C++14
0 / 100
155 ms 26184 KB
#include <bits/stdc++.h>

using namespace std;

bool ch=false;
long long n,s,si,sj,ei,ej;
long long a[1000][1000];
long long b[1000][1000];
long long c[1000][1000];
long long x[4]={0,0,-1,1};
long long y[4]={-1,1,0,0};

bool check(long long t)
{
	queue<pair<pair<long long,long long>,pair<long long,long long> > > h;
	h.push({{0,t},{si,sj}});
	c[si][sj]=t;
	while(!h.empty())
	{
		long long t0=h.front().first.first;
		long long t1=h.front().first.second;
		long long t2=h.front().second.first;
		long long t3=h.front().second.second;
		h.pop();
		if(t2==ei && t3==ej)
		{
			while(!h.empty())
			{
				h.pop();
			}
			return true;
		}
		for(int i=0;i<4;i++)
		{
			if(-1<a[t2+x[i]][t3+y[i]] && a[t2+x[i]][t3+y[i]]<=t1+(t0+1)/s)
			{
				continue;
			}
			if(c[t2+x[i]][t3+y[i]]>t1+(t0+1)/s)
			{
				c[t2+x[i]][t3+y[i]]=t1+(t0+1)/s;
				h.push({{(t0+1)%s,t1+(t0+1)/s},{t2+x[i],t3+y[i]}});
			}
		}
	}
	return false;
}

int main(void)
{
	queue<pair<long long,pair<long long,long long> > > h;
	cin>>n>>s;
	for(int i=0;i<=n+100;i++)
	{
		for(int j=0;j<=n+100;j++)
		{
			a[i][j]=-1;
			b[i][j]=-1;
		}
	}
	for(int i=1;i<=n;i++)
	{
		string tt;
		cin>>tt;
		for(int j=1;j<=n;j++)
		{
			if(tt[j-1]=='T')
			{
				a[i][j]=-1;
				b[i][j]=-1;
			}
			else
			{
				a[i][j]=INT_MAX;
				b[i][j]=INT_MAX;
			}
			if(tt[j-1]=='M')
			{
				si=i;
				sj=j;
			}
			else if(tt[j-1]=='D')
			{
				a[i][j]=-1;
				ei=i;
				ej=j;
			}
			else if(tt[j-1]=='H')
			{
				h.push({0,{i,j}});
				a[i][j]=0;
			}
		}
	}
	while(!h.empty())
	{
		long long t1=h.front().first;
		long long t2=h.front().second.first;
		long long t3=h.front().second.second;
		h.pop();
		for(int i=0;i<4;i++)
		{
			if(a[t2+x[i]][t3+y[i]]>t1+1)
			{
				a[t2+x[i]][t3+y[i]]=t1+1;
				h.push({t1+1,{t2+x[i],t3+y[i]}});
			}
		}
	}
	for(int i=0;i<=n;i++)
	{
		for(int j=0;j<=n;j++)
		{
			if(a[i][j]==INT_MAX)
			{
				cout<<"-1 ";
				continue;
			}
			cout<<a[i][j]<<" ";
		}
		cout<<"\n";
	}
	long long l=0,r=1000000000;
	while(l<r)
	{
		long long mid=(l+r)>>1;
		for(int i=0;i<n+100;i++)
		{
			for(int j=0;j<n+100;j++)
			{
				c[i][j]=b[i][j];
			}
		}
		if(check(mid))
		{
			l=mid+1;
			ch=true;
		}
		else
		{
			r=mid-1;
		}
	}
	// for(int i=0;i<=n;i++)
	// {
	// 	for(int j=0;j<=n;j++)
	// 	{
	// 		if(c[i][j]==INT_MAX)
	// 		{
	// 			cout<<"-1 ";
	// 			continue;
	// 		}
	// 		cout<<c[i][j]<<" ";
	// 	}
	// 	cout<<"\n";
	// }
	if(ch)
	{
		cout<<r;
	}
	else
	{
		cout<<-1;
	}
	return 0;
}
/*
7 3
TTTTTTT
TGGGGGT
TGGGGGT
MGGGGGD
TGGGGGT
TGGGGGT
THHHHHT

TTTTTTT
T55555T
T44444T
M33333D
T22222T
T11111T
THHHHHT

TTTTTTT
T55555T
T44444T
M111222
T22222T
T11111T
THHHHHT
*/
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 8696 KB Output isn't correct
2 Incorrect 1 ms 8528 KB Output isn't correct
3 Incorrect 2 ms 8528 KB Output isn't correct
4 Incorrect 1 ms 8528 KB Output isn't correct
5 Incorrect 1 ms 8528 KB Output isn't correct
6 Incorrect 2 ms 8696 KB Output isn't correct
7 Incorrect 93 ms 25432 KB Output isn't correct
8 Incorrect 1 ms 8528 KB Output isn't correct
9 Incorrect 1 ms 8528 KB Output isn't correct
10 Incorrect 1 ms 8528 KB Output isn't correct
11 Incorrect 2 ms 8528 KB Output isn't correct
12 Incorrect 2 ms 10832 KB Output isn't correct
13 Incorrect 2 ms 11000 KB Output isn't correct
14 Incorrect 2 ms 10832 KB Output isn't correct
15 Incorrect 2 ms 10576 KB Output isn't correct
16 Incorrect 2 ms 10576 KB Output isn't correct
17 Incorrect 2 ms 10576 KB Output isn't correct
18 Incorrect 2 ms 10576 KB Output isn't correct
19 Incorrect 2 ms 10576 KB Output isn't correct
20 Incorrect 2 ms 10576 KB Output isn't correct
21 Incorrect 2 ms 10576 KB Output isn't correct
22 Incorrect 2 ms 10576 KB Output isn't correct
23 Incorrect 2 ms 10832 KB Output isn't correct
24 Incorrect 3 ms 10832 KB Output isn't correct
25 Incorrect 2 ms 10760 KB Output isn't correct
26 Incorrect 2 ms 10832 KB Output isn't correct
27 Incorrect 2 ms 10832 KB Output isn't correct
28 Incorrect 2 ms 10832 KB Output isn't correct
29 Incorrect 2 ms 10832 KB Output isn't correct
30 Incorrect 2 ms 10832 KB Output isn't correct
31 Incorrect 3 ms 10844 KB Output isn't correct
32 Incorrect 2 ms 10832 KB Output isn't correct
33 Incorrect 19 ms 17488 KB Output isn't correct
34 Incorrect 14 ms 17656 KB Output isn't correct
35 Incorrect 23 ms 17488 KB Output isn't correct
36 Incorrect 17 ms 17756 KB Output isn't correct
37 Incorrect 17 ms 17744 KB Output isn't correct
38 Incorrect 29 ms 17488 KB Output isn't correct
39 Incorrect 21 ms 19784 KB Output isn't correct
40 Incorrect 29 ms 19792 KB Output isn't correct
41 Incorrect 35 ms 19868 KB Output isn't correct
42 Incorrect 29 ms 22096 KB Output isn't correct
43 Incorrect 25 ms 22260 KB Output isn't correct
44 Incorrect 45 ms 21892 KB Output isn't correct
45 Incorrect 30 ms 24400 KB Output isn't correct
46 Incorrect 30 ms 24400 KB Output isn't correct
47 Incorrect 54 ms 24320 KB Output isn't correct
48 Incorrect 35 ms 24656 KB Output isn't correct
49 Incorrect 34 ms 24656 KB Output isn't correct
50 Incorrect 78 ms 24392 KB Output isn't correct
51 Incorrect 41 ms 25160 KB Output isn't correct
52 Incorrect 39 ms 24944 KB Output isn't correct
53 Incorrect 73 ms 24640 KB Output isn't correct
54 Incorrect 45 ms 25416 KB Output isn't correct
55 Incorrect 45 ms 25432 KB Output isn't correct
56 Incorrect 85 ms 25056 KB Output isn't correct
57 Incorrect 51 ms 25680 KB Output isn't correct
58 Incorrect 56 ms 25672 KB Output isn't correct
59 Incorrect 96 ms 25344 KB Output isn't correct
60 Incorrect 57 ms 26184 KB Output isn't correct
61 Incorrect 56 ms 25936 KB Output isn't correct
62 Incorrect 113 ms 25420 KB Output isn't correct
63 Incorrect 109 ms 25808 KB Output isn't correct
64 Incorrect 154 ms 25832 KB Output isn't correct
65 Incorrect 155 ms 25756 KB Output isn't correct
66 Incorrect 114 ms 25672 KB Output isn't correct
67 Incorrect 122 ms 25672 KB Output isn't correct
68 Incorrect 76 ms 25160 KB Output isn't correct
69 Incorrect 79 ms 25104 KB Output isn't correct
70 Incorrect 68 ms 25288 KB Output isn't correct
71 Incorrect 66 ms 25280 KB Output isn't correct
72 Incorrect 69 ms 25160 KB Output isn't correct
73 Incorrect 64 ms 25936 KB Output isn't correct
74 Incorrect 80 ms 25928 KB Output isn't correct
75 Incorrect 83 ms 25932 KB Output isn't correct
76 Incorrect 82 ms 25928 KB Output isn't correct
77 Incorrect 84 ms 25936 KB Output isn't correct
78 Incorrect 91 ms 25672 KB Output isn't correct
79 Incorrect 79 ms 25672 KB Output isn't correct
80 Incorrect 82 ms 25676 KB Output isn't correct
81 Incorrect 83 ms 25672 KB Output isn't correct
82 Incorrect 76 ms 25680 KB Output isn't correct
83 Incorrect 89 ms 25552 KB Output isn't correct
84 Incorrect 90 ms 25552 KB Output isn't correct
85 Incorrect 89 ms 25644 KB Output isn't correct
86 Incorrect 88 ms 25668 KB Output isn't correct
87 Incorrect 88 ms 25560 KB Output isn't correct
88 Incorrect 94 ms 25684 KB Output isn't correct
89 Incorrect 89 ms 25672 KB Output isn't correct
90 Incorrect 101 ms 25672 KB Output isn't correct
91 Incorrect 90 ms 25672 KB Output isn't correct
92 Incorrect 95 ms 25676 KB Output isn't correct