Submission #1295809

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

using namespace std;

vector<int> l;

void initialize(vector<int> t, vector<int> h) {
	l.resize(h.size(), -1);
	auto dfs = [&](auto& dfs, int i, int j, int val, bool c = false) -> void {
		//cout<< "(" << i << "; " << j << ") -> " << val << '\n';
		if (i < 0 || i >= t.size() || j >= h.size() || h[j] >= t[i]) {
		//	cout<< "returned\n";
			return;
		}
		if (i == 0 && l[j] == -1) {
			int ind = j;
			while (ind-1 > 0 && h[ind-1] < t[0]) {
				l[ind-1] = val;
				ind--;
			}
			l[j] = val;
		}
		dfs(dfs, i-1, j, val, true);
		if (!c)
			dfs(dfs, i+1, j, val);
		dfs(dfs, i, j+1, val);
	};
	for (int i = 0; i < h.size(); i++)
		if (l[i] == -1 && t[0] > h[i])
			dfs(dfs, 0, i, i);

	//cout<< "L :\n";
	//for (int e : l)
	//	cout<< e << ' ';
	//cout<< '\n';
}

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