Submission #886875

#TimeUsernameProblemLanguageResultExecution timeMemory
886875rxlfd314Worm Worries (BOI18_worm)C++17
Compilation error
0 ms0 KiB
#include "worm.h"
#include <bits/stdc++.h>
using namespace std;
using ari3 = array<int, 3>;

#define vt vector
#define size(x) (int((x).size()))
#define all(x) begin(x), end(x)

#define REP(a, b, c, d) for (int a = (b); (d) > 0 ? a <= (c) : a >= (c); a += (d))
#define FOR(a, b, c) REP(a, b, c, 1)
#define ROF(a, b, c) REP(a, b, c, -1)

mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
int rand_() {
	return uniform_int_distribution<int>(0, INT_MAX)(rng);
}

void Init(int N, int M, int K, int Q) {
	map<ari3, int> done;
	auto ask = [&](int a, int b, int c) {
		if (done.find({a, b, c}) != end(done))
			return done[{a, b, c}];
		if (a < 0 || a >= N || b < 0 || b >= M || c < 0 || c >= K)
			return 0;
		int ret = Query(a + 1, b + 1, c + 1);
		done[{a, b, c}] = ret;
		return a;
	};
	auto good = [&](int a, int b, int c) {
		int v = ask(a, b, c);
		if (ask(a-1, b, c) > v)
			return ari3{a-1, b, c};
		if (ask(a+1, b, c) > v)
			return ari3{a+1, b, c};
		if (ask(a, b-1, c) > v)
			return ari3{a, b-1, c};
		if (ask(a, b+1, c) > v)
			return ari3{a, b+1, c};
		if (ask(a, b, c-1) > v)
			return ari3{a, b, c-1};
		if (ask(a, b, c+1) > v)
			return ari3{a, b, c+1};
		return ari3{-1, -1, -1};
	};
	// choose random X times, go Y steps each time
	const int X = 20, Y = Q / (8 * X);
	FOR(_, 1, X) {
		int a = rand_() % N, b = rand_() % M, c = rand_() % K;
		FOR(__, 1, Y) {
#ifdef DEBUG
			cout << "current: " << a << ' ' << b << ' ' << c << endl;
#endif
			auto [d, e, f] = good(a, b, c);
			if (d < 0 && e < 0 && f < 0) {
				Guess(a + 1, b + 1, c + 1);
				return;
			}
			a = d, b = e, c = f;
		}
	}
}

Compilation message (stderr)

worm.cpp:1:10: fatal error: worm.h: No such file or directory
    1 | #include "worm.h"
      |          ^~~~~~~~
compilation terminated.