Submission #1296042

#TimeUsernameProblemLanguageResultExecution timeMemory
1296042SabaKharebavaObstacles for a Llama (IOI25_obstacles)C++20
0 / 100
2095 ms22972 KiB
#include<bits/stdc++.h>

using namespace std;

vector<int> c;

void initialize(vector<int> t, vector<int> h) {
	c.resize(h.size(), -1);
	auto dfs = [&](auto &dfs, int i, int j, int val) -> void {
		if (h[j] >= t[i] || i < 0 || i >= t.size() || j >= h.size()) {
			return;
		}
		if (i == 0)
			c[j] = val;
		dfs(dfs, i+1, j, val);
		dfs(dfs, i, j+1, val);

		if (i == 2 && j-1 >= 0 && h[j-1] >= t[i-1] && h[j] < t[0] && c[j] == -1) {
			int ind = j;
			while (ind >= 0 && h[ind] < t[0]) {
				c[ind] = val;
				ind--;
			}
			if (j+1 < h.size() && h[j+1] < t[0])
				dfs(dfs, 0, j+1, val);
		}
	};

	for (int i = 0; i < h.size(); i++)
		if (c[i] == -1 && h[i] < t[0])
			dfs(dfs, 0, i, i);
}

bool can_reach(int ll, int r, int s, int d) {
	if (d < s)
		swap(d, s);
	return (c[d] == s);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...