Submission #1226098

#TimeUsernameProblemLanguageResultExecution timeMemory
1226098JerFun Tour (APIO20_fun)C++20
Compilation error
0 ms0 KiB
#include "fun.h"
#include <bits/stdc++.h>
#include <vector>

using namespace std;
const int MAXN = 100005;
bool used[MAXN];
int m[MAXN];
int n;

int dfs(int i, int d){
	if (2 * i + 1 >= n) {m[i] = d; return d;}
	m[i] = dfs(2 * i + 1, d + 1);
	if (2 * i + 2 < n) dfs(2 * i + 2, d + 1);
	return m[i];
}

int find_deepest(int i){
	if (2 * i + 1 >= n) {used[i] = true, m[i]--; return i;}

	int res = m[i];

	if (!used[2 * i + 1] and !used[2 * i + 2]){
		if (m[2 * i + 1] >= m[2 * i + 2])
			res = find_deepest(2 * i + 1);
		else
			res = find_deepest(2 * i + 2);
		m[i] = max(m[2 * i + 1], m[2 * i + 2]);
		return res;
	}

	if (used[2 * i + 1] and !used[2 * i + 2]){
		res = find_deepest(2 * i + 2);
		m[i] = max(m[2 * i + 1], m[2 * i + 2]);
		return res;
	}

	if (!used[2 * i + 1] and used[2 * i + 2])
	{
		res = find_deepest(2 * i + 1);
		m[i] = max(m[2 * i + 1], m[2 * i + 2]);
		return res;
	}

	used[i] = true, m[i]--;
	return i;
}

std::vector<int> createFunTour(int N, int Q) {
	if (n == 2)	return {0, 1};

	n = N;
	vector<int> res;

	dfs(0, 0);

	int curr = 0, r, l;
	for (int i = 0; i <= n; i += 2){
		r = -1;
		if (used[2 * curr + 2])
			r = curr, curr = 2 * curr + 1;
		if (r == -1) r = find_deepest(2 * curr + 2);

		l = (used[2 * curr + 1]) ? curr : find_deepest(curr);

		if (l == curr)
			res.push_back(r);
		else
			res.push_back(l), res.push_back(r);
	}
	
	res.push_back(curr);

	return res;
}

int main(){
	int y = 0;
	scanf("%d", &y);
	vector<int> res;

	res = createFunTour(y, 0);

	for (auto i : res)
		cout << i << ' ';

	return 0;
}

Compilation message (stderr)

fun.cpp: In function 'int main()':
fun.cpp:79:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   79 |         scanf("%d", &y);
      |         ~~~~~^~~~~~~~~~
/usr/bin/ld: /tmp/cclNR3MN.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccM50FJq.o:fun.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status