답안 #104018

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
104018 2019-04-03T17:10:57 Z Erkhemkhuu Mecho (IOI09_mecho) C++17
31 / 100
1000 ms 66560 KB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define mp make_pair
#define F first
#define S second
int movex[4] = {-1, 0, 1, 0};
int movey[4] = {0, 1, 0, -1};
char maps[805][805];
int beeStep[805][805], meStep[805][805], n, Mx, My, s, Dx, Dy;
queue <pair <int, int> > bee, me;
inline bool check(int x, int y) {
	if(x >= 0 && x < n && y >= 0 && y < n) return true;
	return false;
}
inline bool can(int mid) {
	int curx, cury, curstep, i, i1, movexx, moveyy;
	memset(meStep, -1, sizeof(meStep));
	me.push(mp(Mx * 1000 + My, mid));
	while(!me.empty()) {
		curx = me.front().F / 1000;
		cury = me.front().F % 1000;
		curstep = me.front().S;
		me.pop();
		if(meStep[curx][cury] == -1) {
			meStep[curx][cury] = curstep;
			for(i = 0; i < 4; i++) {
				for(i1 = 1; i1 <= s; i1++) {
					movexx = movex[i] * i1 + curx;
					moveyy = movey[i] * i1 + cury;
					if(check(movexx, moveyy) && maps[movexx][moveyy] != 'T' && meStep[movexx][moveyy] == -1) {
						if(beeStep[movexx][moveyy] != -1 && beeStep[movexx][moveyy] <= curstep) break;
						me.push(mp(movexx * 1000 + moveyy, curstep + 1));
					}
					else break;
				}
			}
		}
	}
	if(beeStep[Dx][Dy] == -1) beeStep[Dx][Dy] = 1e9;
	if(meStep[Dx][Dy] == -1) return false;
	return meStep[Dx][Dy] < beeStep[Dx][Dy];
}
int main() {
	cin.tie(NULL);
	cout.tie(NULL);
	ios_base::sync_with_stdio;
	int i, j, l, r, curx, cury, curstep, movexx, moveyy, mid;
	cin >> n >> s;
	for(i = 0; i < n; i++) {
		cin >> maps[i];
		for(j = 0; j < n; j++) {
			if(maps[i][j] == 'H')
				bee.push(mp(i * 1000 + j, 0));
			if(maps[i][j] == 'M') {
				Mx = i; My = j;
			}
			if(maps[i][j] == 'D') {
				Dx = i; Dy = j;
			}
		}
	}
	memset(beeStep, -1, sizeof(beeStep));
	while(!bee.empty()) {
		curx = bee.front().F / 1000;
		cury = bee.front().F % 1000;
		curstep = bee.front().S;
		bee.pop();
		if(beeStep[curx][cury] == -1) {
			beeStep[curx][cury] = curstep;
			for(i = 0; i < 4; i++) {
				movexx = movex[i] + curx;
				moveyy = movey[i] + cury;
				if(check(movexx, moveyy) && maps[movexx][moveyy] != 'T' && beeStep[movexx][moveyy] == -1)
					bee.push(mp(movexx * 1000 + moveyy, curstep + 1));
			}
		}
	}
	if(!can(0)) {
		cout << "-1\n";
		return 0;
	}
	l = 0; r = n * n;
	while(l + 1 < r) {
		mid = (l + r) / 2;
		if(can(mid)) l = mid;
		else r = mid;
	}
	cout << l << "\n";
	return 0;
}

Compilation message

mecho.cpp: In function 'int main()':
mecho.cpp:48:27: warning: statement is a reference, not call, to function 'std::ios_base::sync_with_stdio' [-Waddress]
  ios_base::sync_with_stdio;
                           ^
mecho.cpp:48:27: warning: statement has no effect [-Wunused-value]
# 결과 실행 시간 메모리 Grader output
1 Correct 8 ms 5376 KB Output is correct
2 Incorrect 7 ms 5376 KB Output isn't correct
3 Correct 6 ms 5376 KB Output is correct
4 Incorrect 7 ms 5376 KB Output isn't correct
5 Correct 9 ms 5376 KB Output is correct
6 Incorrect 6 ms 5376 KB Output isn't correct
7 Execution timed out 1072 ms 19080 KB Time limit exceeded
8 Correct 6 ms 5376 KB Output is correct
9 Correct 7 ms 5376 KB Output is correct
10 Correct 8 ms 5376 KB Output is correct
11 Correct 10 ms 5376 KB Output is correct
12 Incorrect 7 ms 5504 KB Output isn't correct
13 Incorrect 8 ms 5504 KB Output isn't correct
14 Correct 7 ms 5504 KB Output is correct
15 Correct 7 ms 5376 KB Output is correct
16 Correct 9 ms 5504 KB Output is correct
17 Correct 8 ms 5504 KB Output is correct
18 Correct 8 ms 5376 KB Output is correct
19 Correct 9 ms 5504 KB Output is correct
20 Correct 8 ms 5376 KB Output is correct
21 Correct 8 ms 5504 KB Output is correct
22 Correct 10 ms 5504 KB Output is correct
23 Correct 8 ms 5376 KB Output is correct
24 Correct 9 ms 5504 KB Output is correct
25 Correct 9 ms 5376 KB Output is correct
26 Correct 9 ms 5504 KB Output is correct
27 Correct 9 ms 5504 KB Output is correct
28 Correct 10 ms 5504 KB Output is correct
29 Correct 10 ms 5632 KB Output is correct
30 Correct 9 ms 5504 KB Output is correct
31 Correct 9 ms 5504 KB Output is correct
32 Correct 10 ms 5504 KB Output is correct
33 Correct 18 ms 5632 KB Output is correct
34 Correct 207 ms 6228 KB Output is correct
35 Runtime error 173 ms 66560 KB Execution killed with signal 9 (could be triggered by violating memory limits)
36 Correct 17 ms 5760 KB Output is correct
37 Correct 295 ms 6476 KB Output is correct
38 Runtime error 176 ms 66560 KB Execution killed with signal 9 (could be triggered by violating memory limits)
39 Correct 25 ms 5752 KB Output is correct
40 Correct 420 ms 6628 KB Output is correct
41 Runtime error 231 ms 66560 KB Execution killed with signal 9 (could be triggered by violating memory limits)
42 Correct 25 ms 5724 KB Output is correct
43 Correct 543 ms 6896 KB Output is correct
44 Runtime error 170 ms 66560 KB Execution killed with signal 9 (could be triggered by violating memory limits)
45 Correct 29 ms 5852 KB Output is correct
46 Correct 822 ms 7168 KB Output is correct
47 Runtime error 182 ms 66560 KB Execution killed with signal 9 (could be triggered by violating memory limits)
48 Correct 33 ms 5888 KB Output is correct
49 Correct 913 ms 7608 KB Output is correct
50 Runtime error 167 ms 66560 KB Execution killed with signal 9 (could be triggered by violating memory limits)
51 Correct 41 ms 6068 KB Output is correct
52 Execution timed out 1084 ms 7756 KB Time limit exceeded
53 Runtime error 186 ms 66560 KB Execution killed with signal 9 (could be triggered by violating memory limits)
54 Correct 37 ms 6016 KB Output is correct
55 Execution timed out 1074 ms 7964 KB Time limit exceeded
56 Runtime error 192 ms 66560 KB Execution killed with signal 9 (could be triggered by violating memory limits)
57 Correct 42 ms 6008 KB Output is correct
58 Execution timed out 1078 ms 8364 KB Time limit exceeded
59 Runtime error 185 ms 66560 KB Execution killed with signal 9 (could be triggered by violating memory limits)
60 Correct 49 ms 6008 KB Output is correct
61 Execution timed out 1076 ms 8716 KB Time limit exceeded
62 Runtime error 186 ms 66560 KB Execution killed with signal 9 (could be triggered by violating memory limits)
63 Incorrect 66 ms 6008 KB Output isn't correct
64 Incorrect 291 ms 6136 KB Output isn't correct
65 Incorrect 269 ms 6108 KB Output isn't correct
66 Incorrect 67 ms 6008 KB Output isn't correct
67 Correct 78 ms 6008 KB Output is correct
68 Incorrect 75 ms 6108 KB Output isn't correct
69 Incorrect 55 ms 6136 KB Output isn't correct
70 Incorrect 62 ms 6008 KB Output isn't correct
71 Incorrect 55 ms 6136 KB Output isn't correct
72 Incorrect 56 ms 6032 KB Output isn't correct
73 Incorrect 209 ms 6728 KB Output isn't correct
74 Runtime error 262 ms 66560 KB Execution killed with signal 9 (could be triggered by violating memory limits)
75 Incorrect 672 ms 6572 KB Output isn't correct
76 Incorrect 473 ms 6488 KB Output isn't correct
77 Execution timed out 1052 ms 8280 KB Time limit exceeded
78 Correct 192 ms 7032 KB Output is correct
79 Runtime error 219 ms 66560 KB Execution killed with signal 9 (could be triggered by violating memory limits)
80 Incorrect 794 ms 7168 KB Output isn't correct
81 Incorrect 757 ms 6600 KB Output isn't correct
82 Execution timed out 1076 ms 10040 KB Time limit exceeded
83 Incorrect 189 ms 6928 KB Output isn't correct
84 Runtime error 193 ms 66560 KB Execution killed with signal 9 (could be triggered by violating memory limits)
85 Execution timed out 1083 ms 9336 KB Time limit exceeded
86 Execution timed out 1081 ms 7676 KB Time limit exceeded
87 Execution timed out 1088 ms 15596 KB Time limit exceeded
88 Incorrect 355 ms 9468 KB Output isn't correct
89 Runtime error 209 ms 66560 KB Execution killed with signal 9 (could be triggered by violating memory limits)
90 Execution timed out 1080 ms 17288 KB Time limit exceeded
91 Execution timed out 1085 ms 37940 KB Time limit exceeded
92 Execution timed out 1074 ms 11792 KB Time limit exceeded