Submission #389423

# Submission time Handle Problem Language Result Execution time Memory
389423 2021-04-14T04:32:18 Z arwaeystoamneg Mecho (IOI09_mecho) C++17
5 / 100
1000 ms 10096 KB
// EXPLOSION!
#define _CRT_SECURE_NO_WARNINGS
#include<bits/stdc++.h>
#include<unordered_set>
#include<unordered_map>
#include<chrono>

using namespace std;
typedef pair<int, int> pii;
typedef long long ll;
typedef pair<ll, ll> pll;
typedef long double ld;
typedef vector<int> vi;
typedef vector<ll> vll;
typedef vector<pair<int, int>> vpi;
typedef vector<pair<ll, ll>> vpll;

#define FOR(i,a,b) for (int i = (a); i < (b); ++i)
#define F0R(i,a) FOR(i,0,a)
#define ROF(i,a,b) for (int i = (b)-1; i >= (a); --i)
#define R0F(i,a) ROF(i,0,a)
#define trav(a,x) for (auto& a: x)

#define pb push_back
#define mp make_pair
#define rsz resize
#define sz(x) int(x.size())
#define all(x) x.begin(),x.end()
#define f first
#define s second
#define cont continue
#define endl '\n'
//#define ednl '\n'
#define test int testc;cin>>testc;while(testc--)
#define pr(a, b) trav(x,a)cerr << x << b; cerr << endl;
#define message cout << "Hello World" << endl;
const int dx[4] = { 1,0,-1,0 }, dy[4] = { 0,1,0,-1 }; // for every grid problem!!
const ll linf = 4000000000000000000LL;
const ll inf = 1000000007;//998244353    

void pv(vi a) { trav(x, a)cout << x << " "; cout << endl; }void pv(vll a) { trav(x, a)cout << x << " "; cout << endl; }void pv(vector<vi>a) {
	F0R(i, sz(a)) { cout << i << endl; pv(a[i]); cout << endl; }
}void pv(vector<vll>a) { F0R(i, sz(a)) { cout << i << endl; pv(a[i]); }cout << endl; }void pv(vector<string>a) { trav(x, a)cout << x << endl; cout << endl; }
void setIO(string s) {
	ios_base::sync_with_stdio(0); cin.tie(0);
	if (sz(s))
	{
		freopen((s + ".in").c_str(), "r", stdin);
		if (s != "test1")
			freopen((s + ".out").c_str(), "w", stdout);
	}
}

int n, m;
const int MAX = 805;
string a[MAX];
int dist[MAX][MAX];
int check(int i, int j)
{
	return i >= 0 && j >= 0 && i < n&& j < n&& a[i][j] != 'T';
}
struct T
{
	int d, extra;
	T next()
	{
		T t = (*this);
		t.extra--;
		if (t.extra == -1)
		{
			t.extra = m;
			t.d++;
		}
		return t;
	}
	bool operator<(const T& x)const
	{
		if (d == x.d)return extra > x.extra;
		return d < x.d;
	}
};
T best[MAX][MAX];
T init = { inf,0 };
pii start, finish;
int solve(int t)
{
	F0R(i, n)F0R(j, n)best[i][j] = init;
	if (t >= dist[start.f][start.s])return 0;
	best[start.f][start.s] = { t,m };
	deque<pii>todo = { {start.f,start.s} };
	while (sz(todo))
	{
		int i = todo.back().f, j = todo.back().s;
		todo.pop_back();
		F0R(k, 4)
		{
			int x = i + dx[k], y = j + dy[k];
			if (check(x, y))
			{
				T temp = best[i][j];
				temp = temp.next();
				if (dist[x][y] > temp.d && temp < best[x][y])
				{
					best[x][y] = temp;
					todo.pb({ x,y });
				}
			}
		}
	}
	return best[finish.f][finish.s].d != inf;
}
int main()
{
	setIO("");
	cin >> n >> m;
	F0R(i, n)cin >> a[i];
	F0R(i, n)
	{
		F0R(j, n)
		{
			if (a[i][j] == 'M')start = { i,j };
			if (a[i][j] == 'D')finish = { i,j };
		}
	}
	F0R(i, n)F0R(j, n)dist[i][j] = inf;
	deque<pii> todo;
	F0R(i, n)F0R(j, n)if (a[i][j] == 'H')todo.pb({ i,j }), dist[i][j] = 0;
	while (sz(todo))
	{
		int i = todo.back().f, j = todo.back().s;
		todo.pop_back();
		F0R(k, 4)
		{
			int x = i + dx[k], y = j + dy[k];
			if (check(x, y) && a[x][y] != 'D' && dist[x][y] > dist[i][j] + 1)
			{
				dist[x][y] = dist[i][j] + 1;
				todo.push_front({ x,y });
			}
		}
	}
	if (!solve(0))
	{
		cout << -1 << endl;
		return 0;
	}
	int l = 0, r = 2 * n;
	while (l < r)
	{
		int m = (l + r + 1) / 2;
		if (solve(m))
		{
			l = m;
		}
		else
		{
			r = m - 1;
		}
	}
	cout << l << endl;
}

Compilation message

mecho.cpp: In function 'void setIO(std::string)':
mecho.cpp:48:10: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
   48 |   freopen((s + ".in").c_str(), "r", stdin);
      |   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mecho.cpp:50:11: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
   50 |    freopen((s + ".out").c_str(), "w", stdout);
      |    ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 332 KB Output isn't correct
2 Incorrect 1 ms 336 KB Output isn't correct
3 Incorrect 1 ms 332 KB Output isn't correct
4 Incorrect 1 ms 332 KB Output isn't correct
5 Correct 1 ms 352 KB Output is correct
6 Incorrect 1 ms 332 KB Output isn't correct
7 Execution timed out 1098 ms 9260 KB Time limit exceeded
8 Incorrect 1 ms 460 KB Output isn't correct
9 Correct 1 ms 460 KB Output is correct
10 Incorrect 1 ms 460 KB Output isn't correct
11 Incorrect 1 ms 460 KB Output isn't correct
12 Incorrect 1 ms 740 KB Output isn't correct
13 Correct 2 ms 716 KB Output is correct
14 Incorrect 10 ms 716 KB Output isn't correct
15 Incorrect 1 ms 480 KB Output isn't correct
16 Incorrect 1 ms 460 KB Output isn't correct
17 Incorrect 1 ms 460 KB Output isn't correct
18 Incorrect 1 ms 460 KB Output isn't correct
19 Incorrect 1 ms 460 KB Output isn't correct
20 Incorrect 1 ms 460 KB Output isn't correct
21 Incorrect 1 ms 588 KB Output isn't correct
22 Incorrect 1 ms 592 KB Output isn't correct
23 Incorrect 1 ms 716 KB Output isn't correct
24 Incorrect 1 ms 716 KB Output isn't correct
25 Incorrect 1 ms 716 KB Output isn't correct
26 Incorrect 1 ms 716 KB Output isn't correct
27 Incorrect 2 ms 872 KB Output isn't correct
28 Incorrect 1 ms 844 KB Output isn't correct
29 Incorrect 1 ms 844 KB Output isn't correct
30 Incorrect 1 ms 844 KB Output isn't correct
31 Incorrect 3 ms 844 KB Output isn't correct
32 Incorrect 2 ms 848 KB Output isn't correct
33 Incorrect 17 ms 3908 KB Output isn't correct
34 Incorrect 24 ms 3788 KB Output isn't correct
35 Execution timed out 1085 ms 3988 KB Time limit exceeded
36 Incorrect 22 ms 4472 KB Output isn't correct
37 Incorrect 30 ms 4428 KB Output isn't correct
38 Execution timed out 1053 ms 4616 KB Time limit exceeded
39 Incorrect 35 ms 4996 KB Output isn't correct
40 Incorrect 39 ms 5000 KB Output isn't correct
41 Execution timed out 1086 ms 5196 KB Time limit exceeded
42 Incorrect 34 ms 5576 KB Output isn't correct
43 Incorrect 47 ms 5580 KB Output isn't correct
44 Execution timed out 1097 ms 5796 KB Time limit exceeded
45 Incorrect 46 ms 6092 KB Output isn't correct
46 Incorrect 70 ms 6092 KB Output isn't correct
47 Execution timed out 1093 ms 6440 KB Time limit exceeded
48 Incorrect 52 ms 6732 KB Output isn't correct
49 Incorrect 72 ms 6752 KB Output isn't correct
50 Execution timed out 1077 ms 7068 KB Time limit exceeded
51 Incorrect 62 ms 7348 KB Output isn't correct
52 Incorrect 84 ms 7352 KB Output isn't correct
53 Execution timed out 1093 ms 7884 KB Time limit exceeded
54 Incorrect 70 ms 7884 KB Output isn't correct
55 Incorrect 100 ms 7952 KB Output isn't correct
56 Execution timed out 1090 ms 8564 KB Time limit exceeded
57 Incorrect 83 ms 8524 KB Output isn't correct
58 Incorrect 118 ms 8572 KB Output isn't correct
59 Execution timed out 1087 ms 9240 KB Time limit exceeded
60 Incorrect 89 ms 9164 KB Output isn't correct
61 Incorrect 126 ms 9164 KB Output isn't correct
62 Execution timed out 1094 ms 9944 KB Time limit exceeded
63 Incorrect 188 ms 9196 KB Output isn't correct
64 Correct 194 ms 9148 KB Output is correct
65 Incorrect 177 ms 9196 KB Output isn't correct
66 Incorrect 140 ms 9288 KB Output isn't correct
67 Incorrect 185 ms 9280 KB Output isn't correct
68 Incorrect 61 ms 9184 KB Output isn't correct
69 Correct 62 ms 9156 KB Output is correct
70 Incorrect 47 ms 9164 KB Output isn't correct
71 Incorrect 46 ms 9204 KB Output isn't correct
72 Correct 41 ms 9164 KB Output is correct
73 Execution timed out 1045 ms 9452 KB Time limit exceeded
74 Execution timed out 1088 ms 9452 KB Time limit exceeded
75 Execution timed out 1085 ms 9440 KB Time limit exceeded
76 Execution timed out 1082 ms 9412 KB Time limit exceeded
77 Execution timed out 1081 ms 9440 KB Time limit exceeded
78 Execution timed out 1089 ms 9424 KB Time limit exceeded
79 Execution timed out 1087 ms 10096 KB Time limit exceeded
80 Execution timed out 1097 ms 9416 KB Time limit exceeded
81 Execution timed out 1090 ms 9408 KB Time limit exceeded
82 Execution timed out 1091 ms 9408 KB Time limit exceeded
83 Execution timed out 1093 ms 9412 KB Time limit exceeded
84 Execution timed out 1078 ms 9760 KB Time limit exceeded
85 Execution timed out 1098 ms 9284 KB Time limit exceeded
86 Execution timed out 1092 ms 9284 KB Time limit exceeded
87 Execution timed out 1084 ms 9360 KB Time limit exceeded
88 Execution timed out 1088 ms 9284 KB Time limit exceeded
89 Execution timed out 1096 ms 9900 KB Time limit exceeded
90 Execution timed out 1095 ms 9284 KB Time limit exceeded
91 Execution timed out 1083 ms 9412 KB Time limit exceeded
92 Execution timed out 1092 ms 9320 KB Time limit exceeded