Submission #1296057

#TimeUsernameProblemLanguageResultExecution timeMemory
1296057SabaKharebavaObstacles for a Llama (IOI25_obstacles)C++20
0 / 100
2097 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] != -1)
			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] && t[1] > h[j] && 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);

	cout<< "C :\n";
	for (int e : c)
		cout<< e << ' ';
	cout<< '\n';
}

bool can_reach(int ll, int r, int s, int d) {
	if (d < s)
		swap(d, s);
	return (c[d] == c[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...